mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2025-02-14 00:59:12 +01:00
Adds src/TwilighPrincessHD
This commit is contained in:
parent
8a9b8a5509
commit
99afe72c1f
@ -0,0 +1,82 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
|
||||
|
||||
// shader 49865bd2e62efda1: tints the bloom mask and applies it to the frame
|
||||
|
||||
|
||||
#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.z, 1.0/gl_FragCoord.w)
|
||||
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[1]; // holds area specific bloom tint color
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[1]; // holds area specific bloom tint color
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
|
||||
#endif
|
||||
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0; // bloom mask created in 6e2f31b2b2fcab1f
|
||||
layout(location = 0) in vec4 passParameterSem0; // pixel coord
|
||||
layout(location = 0) out vec4 passPixelColor0; // pixel color, alpha = blend of original pixel -> used to dampen non-bloom areas in shadow world
|
||||
|
||||
|
||||
// more compatible interpolation
|
||||
float mixf(float x, float y, float a)
|
||||
{
|
||||
return x * (1.0 - a) + y * a;
|
||||
}
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
// get pixel coord
|
||||
vec2 coord = passParameterSem0.xy;
|
||||
|
||||
// get bloom mask
|
||||
vec3 mask = texture(textureUnitPS0, coord).xyz;
|
||||
|
||||
// get area specific color tint
|
||||
vec4 tint = vec4(0.0);
|
||||
tint.x = intBitsToFloat(uf_remappedPS[0].x);
|
||||
tint.y = intBitsToFloat(uf_remappedPS[0].y);
|
||||
tint.z = intBitsToFloat(uf_remappedPS[0].z);
|
||||
tint.w = intBitsToFloat(uf_remappedPS[0].w);
|
||||
|
||||
// get luminance of tint: removes color, keeps intended brightness
|
||||
float tintLuminance = dot(tint.xyz, vec3(0.299, 0.587, 0.114)); // percieved approximation
|
||||
|
||||
// apply custom tint color
|
||||
tint.x = mixf(tintLuminance, tint.x, $bloom_tint_strength);
|
||||
tint.y = mixf(tintLuminance, tint.y, $bloom_tint_strength);
|
||||
tint.z = mixf(tintLuminance, tint.z, $bloom_tint_strength);
|
||||
|
||||
// apply tint on mask
|
||||
vec4 outColor = vec4(0.0);
|
||||
outColor.x = mask.x * tint.x;
|
||||
outColor.y = mask.y * tint.y;
|
||||
outColor.z = mask.z * tint.z;
|
||||
|
||||
// custom brightness reduction, only in shadow world below 1.0
|
||||
outColor.w = mixf(1.0, tint.w, $shadow_world_darkening);
|
||||
|
||||
// export
|
||||
passPixelColor0 = vec4(outColor.x, outColor.y, outColor.z, outColor.w);
|
||||
}
|
@ -0,0 +1,75 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
|
||||
|
||||
// shader 5f422bf63e25be7f: desaturates colors (shadow world only)
|
||||
// desaturates the image by shifting colors towards the red channel
|
||||
// used in shadow world only, as far as tested
|
||||
// grading values always seem to be: 1.0, 1.0, 1.0, ~0.33
|
||||
|
||||
|
||||
#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.z, 1.0/gl_FragCoord.w)
|
||||
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[1]; // grading
|
||||
};
|
||||
|
||||
#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)
|
||||
|
||||
uniform ivec4 uf_remappedPS[1]; // grading
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0; // frame
|
||||
layout(location = 0) in vec4 passParameterSem1; // pixel coordinate
|
||||
layout(location = 0) out vec4 passPixelColor0; // output. w is alpha, overlayed
|
||||
|
||||
|
||||
// more compatible interpolation
|
||||
float mixf(float x, float y, float a)
|
||||
{
|
||||
return x * (1.0 - a) + y * a;
|
||||
}
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
// get texel color
|
||||
vec2 coord = passParameterSem1.xy;
|
||||
vec3 texel = texture(textureUnitPS0, coord).xyz;
|
||||
|
||||
// get grading
|
||||
vec4 grading = vec4(0.0);
|
||||
grading.x = intBitsToFloat(uf_remappedPS[0].x); // 1.0
|
||||
grading.y = intBitsToFloat(uf_remappedPS[0].y); // 1.0
|
||||
grading.z = intBitsToFloat(uf_remappedPS[0].z); // 1.0
|
||||
grading.w = intBitsToFloat(uf_remappedPS[0].w); // alpha, ~0.33
|
||||
|
||||
// shift towards red channel
|
||||
vec4 color = vec4(0.0);
|
||||
color.x = texel.x * grading.x; // red * 1.0
|
||||
color.y = texel.x * grading.y; // red * 1.0
|
||||
color.z = texel.x * grading.z; // red * 1.0
|
||||
color.w = mixf(0.0, grading.w, $shadow_world_desaturation); // apply custom strength
|
||||
|
||||
// export
|
||||
passPixelColor0 = vec4(color.x, color.y, color.z, color.w);
|
||||
|
||||
|
||||
// test current grading colors
|
||||
//passPixelColor0 = vec4(grading.x, grading.y, grading.z, 1.0);
|
||||
|
||||
// test current grading alpha
|
||||
//passPixelColor0 = vec4(grading.w, grading.w, grading.w, 1.0);
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
|
||||
|
||||
// shader 6e2f31b2b2fcab1f: creates bloom mask
|
||||
|
||||
|
||||
#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.z, 1.0/gl_FragCoord.w)
|
||||
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[1]; // mask threshold
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[1]; // mask threshold
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
|
||||
#endif
|
||||
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0; // frame
|
||||
layout(location = 0) out vec4 passPixelColor0; // outputs to a texture used by c612390d4c70f430, 95a5a89d62998e0d and 49865bd2e62efda1
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
// get mask threshold data
|
||||
float cutoff = intBitsToFloat(uf_remappedPS[0].x); // ~0.39: 0-1, higher = less glowing pixels
|
||||
float contrast = intBitsToFloat(uf_remappedPS[0].y); // 4.5: higher = sharper edges
|
||||
|
||||
// get texture coordinate of this pixel
|
||||
vec4 coord = GET_FRAGCOORD();
|
||||
coord.x = coord.x * intBitsToFloat(0x3b088889); // align to scale/grid?
|
||||
coord.y = coord.y * intBitsToFloat(0x3b72b9d6);
|
||||
|
||||
// get color of this pixel
|
||||
vec3 color = texture(textureUnitPS0, vec2(coord.x, coord.y)).xyz;
|
||||
|
||||
// calculate luminance = percieved brightness
|
||||
float luminance = dot(color, vec3(0.299, 0.587, 0.114)); // percieved approximation
|
||||
|
||||
// apply threshold, removes dark areas from the mask
|
||||
luminance = contrast * (luminance - cutoff) * $bloom_strength; // apply custom strength
|
||||
|
||||
// apply to color and clamp
|
||||
color.x = clamp(luminance * color.x, 0.0, 1.0);
|
||||
color.y = clamp(luminance * color.y, 0.0, 1.0);
|
||||
color.z = clamp(luminance * color.z, 0.0, 1.0);
|
||||
|
||||
// export
|
||||
passPixelColor0 = vec4(color.x, color.y, color.z, 0.0);
|
||||
}
|
@ -0,0 +1,300 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
|
||||
|
||||
// shader 95a5a89d62998e0d: blurs bloom vertical
|
||||
|
||||
|
||||
#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.z, 1.0/gl_FragCoord.w)
|
||||
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[3];
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[3];
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
|
||||
#endif
|
||||
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
|
||||
|
||||
float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 R4f = vec4(0.0);
|
||||
vec4 R5f = vec4(0.0);
|
||||
vec4 R6f = vec4(0.0);
|
||||
vec4 R7f = vec4(0.0);
|
||||
vec4 R123f = vec4(0.0);
|
||||
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||
float PV0fx = 0.0, PV0fy = 0.0, PV0fz = 0.0, PV0fw = 0.0, PV1fx = 0.0, PV1fy = 0.0, PV1fz = 0.0, PV1fw = 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;
|
||||
R0f = GET_FRAGCOORD();
|
||||
|
||||
|
||||
// 0
|
||||
R7f.x = R0f.x * intBitsToFloat(0x3b088889);
|
||||
R7f.y = R0f.y * intBitsToFloat(0x3b72b9d6);
|
||||
|
||||
// 1
|
||||
R0f.x = R7f.x;
|
||||
R0f.y = R7f.y + intBitsToFloat(0x3b72b9d6);
|
||||
R1f.z = R7f.x;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbb72b9d6);
|
||||
|
||||
// 2
|
||||
R2f.x = R7f.x;
|
||||
R2f.y = R7f.y + intBitsToFloat(0x3bf2b9d6);
|
||||
R4f.z = R7f.x;
|
||||
R4f.y = R7f.y + intBitsToFloat(0xbbf2b9d6);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, vec2(R7f.x,R7f.y),0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, vec2(R0f.x,R0f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.z,R1f.y),0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, vec2(R2f.x,R2f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
PV0fx = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.y);
|
||||
PV0fy = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.z);
|
||||
PV0fz = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.x);
|
||||
PV0fw = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.w);
|
||||
R0f.y = R7f.y + intBitsToFloat(0x3c360b60);
|
||||
|
||||
// 1
|
||||
R123f.x = mul_nonIEEE(R3f.y,intBitsToFloat(uf_remappedPS[0].x)) + PV0fx;
|
||||
R123f.y = mul_nonIEEE(R3f.w,intBitsToFloat(uf_remappedPS[0].x)) + PV0fw;
|
||||
R123f.z = mul_nonIEEE(R3f.x,intBitsToFloat(uf_remappedPS[0].x)) + PV0fz;
|
||||
R123f.w = mul_nonIEEE(R3f.z,intBitsToFloat(uf_remappedPS[0].x)) + PV0fy;
|
||||
R0f.x = R7f.x;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.y;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.y) + R123f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.x) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.w) + backupReg0f;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.z) + R123f.w;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbc360b60);
|
||||
|
||||
// 3
|
||||
backupReg0f = R2f.z;
|
||||
R3f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.x) + R123f.y;
|
||||
R3f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.y) + R123f.x;
|
||||
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.w) + R123f.z;
|
||||
R2f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),backupReg0f) + R123f.w;
|
||||
R1f.x = R7f.x;
|
||||
|
||||
// 4
|
||||
R2f.x = R7f.x;
|
||||
R2f.y = R7f.y + intBitsToFloat(0x3c72b9d6);
|
||||
R6f.z = R7f.x;
|
||||
R6f.y = R7f.y + intBitsToFloat(0xbc72b9d6);
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, vec2(R4f.z,R4f.y),0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, vec2(R0f.x,R0f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.y),0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, vec2(R2f.x,R2f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.x) + R3f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.w) + R2f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.z) + R2f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.y) + R3f.y;
|
||||
R3f.y = R7f.y + intBitsToFloat(0x3c97b426);
|
||||
|
||||
// 1
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.w) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.x) + backupReg0f;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.z) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.y) + R123f.w;
|
||||
R3f.x = R7f.x;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.y;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.w) + R123f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.z) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.y) + R123f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.x) + backupReg0f;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbc97b426);
|
||||
|
||||
// 3
|
||||
R0f.x = mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[1].x)) + R123f.y;
|
||||
R0f.y = mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[1].x)) + R123f.x;
|
||||
R5f.z = mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[1].x)) + R123f.z;
|
||||
R5f.w = mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[1].x)) + R123f.w;
|
||||
R1f.x = R7f.x;
|
||||
|
||||
// 4
|
||||
R5f.x = R7f.x;
|
||||
R5f.y = R7f.y + intBitsToFloat(0x3cb60b60);
|
||||
R4f.z = R7f.x;
|
||||
R4f.y = R7f.y + intBitsToFloat(0xbcb60b60);
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, vec2(R6f.z,R6f.y),0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, vec2(R3f.x,R3f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.y),0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, vec2(R5f.x,R5f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.z) + R0f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.y) + R5f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.x) + R5f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.w) + R0f.y;
|
||||
R0f.y = R7f.y + intBitsToFloat(0x3cd4629b);
|
||||
|
||||
// 1
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.y) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.w) + R123f.w;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.x) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.z) + backupReg0f;
|
||||
R0f.x = R7f.x;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.y;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.y) + R123f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.x) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.w) + backupReg0f;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.z) + R123f.w;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbcd4629b);
|
||||
|
||||
// 3
|
||||
backupReg0f = R2f.z;
|
||||
R3f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.x) + R123f.y;
|
||||
R3f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.y) + R123f.x;
|
||||
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.w) + R123f.z;
|
||||
R2f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),backupReg0f) + R123f.w;
|
||||
R1f.x = R7f.x;
|
||||
|
||||
// 4
|
||||
R2f.x = R7f.x;
|
||||
R2f.y = R7f.y + intBitsToFloat(0x3cf2b9d6);
|
||||
R6f.z = R7f.x;
|
||||
R6f.y = R7f.y + intBitsToFloat(0xbcf2b9d6);
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, vec2(R4f.z,R4f.y),0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, vec2(R0f.x,R0f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.y),0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, vec2(R2f.x,R2f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.x) + R3f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.w) + R2f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.z) + R2f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.y) + R3f.y;
|
||||
R3f.y = R7f.y + intBitsToFloat(0x3d088888);
|
||||
|
||||
// 1
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.w) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.x) + backupReg0f;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.z) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.y) + R123f.w;
|
||||
R3f.x = R7f.x;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.y;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.w) + R123f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.z) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.y) + R123f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.x) + backupReg0f;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbd088888);
|
||||
|
||||
// 3
|
||||
R0f.x = mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[2].x)) + R123f.y;
|
||||
R0f.y = mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[2].x)) + R123f.x;
|
||||
R5f.z = mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[2].x)) + R123f.z;
|
||||
R5f.w = mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[2].x)) + R123f.w;
|
||||
R1f.x = R7f.x;
|
||||
|
||||
// 4
|
||||
R5f.x = R7f.x;
|
||||
R5f.y = R7f.y + intBitsToFloat(0x3d17b426);
|
||||
R4f.z = R7f.x;
|
||||
R4f.y = R7f.y + intBitsToFloat(0xbd17b426);
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, vec2(R6f.z,R6f.y),0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, vec2(R3f.x,R3f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.y),0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, vec2(R5f.x,R5f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.z) + R0f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.y) + R5f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.x) + R5f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.w) + R0f.y;
|
||||
R0f.y = R7f.y + intBitsToFloat(0x3d26dfc3);
|
||||
|
||||
// 1
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.y) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.w) + R123f.w;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.x) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.z) + backupReg0f;
|
||||
R0f.x = R7f.x;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.y;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.y) + R123f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.x) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.w) + backupReg0f;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.z) + R123f.w;
|
||||
R7f.y = R7f.y + intBitsToFloat(0xbd26dfc3);
|
||||
|
||||
// 3
|
||||
backupReg0f = R2f.z;
|
||||
R2f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.x) + R123f.y;
|
||||
R2f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.y) + R123f.x;
|
||||
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.w) + R123f.z;
|
||||
R2f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg0f) + R123f.w;
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, vec2(R4f.z,R4f.y),0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, vec2(R0f.x,R0f.y),0.0).xyzw);
|
||||
R7f.xyzw = (textureLod(textureUnitPS0, vec2(R7f.x,R7f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.x) + R2f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.w) + R2f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.z) + R2f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.y) + R2f.y;
|
||||
|
||||
// 1
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.w) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.x) + backupReg0f;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.z) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.y) + R123f.w;
|
||||
|
||||
// 2
|
||||
R7f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R7f.x) + R123f.y;
|
||||
R7f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R7f.y) + R123f.w;
|
||||
R7f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R7f.z) + R123f.z;
|
||||
R7f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R7f.w) + R123f.x;
|
||||
|
||||
// export
|
||||
passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||
}
|
@ -0,0 +1,454 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
|
||||
|
||||
// shader c612390d4c70f430: blurs bloom horizontal
|
||||
|
||||
|
||||
#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.z, 1.0/gl_FragCoord.w)
|
||||
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[5];
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[5];
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
|
||||
#endif
|
||||
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
|
||||
|
||||
float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 R4f = vec4(0.0);
|
||||
vec4 R5f = vec4(0.0);
|
||||
vec4 R6f = vec4(0.0);
|
||||
vec4 R7f = vec4(0.0);
|
||||
vec4 R123f = vec4(0.0);
|
||||
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||
float PV0fx = 0.0, PV0fy = 0.0, PV0fz = 0.0, PV0fw = 0.0, PV1fx = 0.0, PV1fy = 0.0, PV1fz = 0.0, PV1fw = 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;
|
||||
R0f = GET_FRAGCOORD();
|
||||
|
||||
|
||||
// 0
|
||||
R7f.x = R0f.x * intBitsToFloat(0x3b088889);
|
||||
R7f.y = R0f.y * intBitsToFloat(0x3b72b9d6);
|
||||
|
||||
// 1
|
||||
R0f.x = R7f.x + intBitsToFloat(0x3b088889);
|
||||
R0f.y = R7f.y;
|
||||
R1f.z = R7f.y;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbb088889);
|
||||
|
||||
// 2
|
||||
R2f.x = R7f.x + intBitsToFloat(0x3b888889);
|
||||
R2f.y = R7f.y;
|
||||
R4f.z = R7f.y;
|
||||
R4f.x = R7f.x + intBitsToFloat(0xbb888889);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, vec2(R7f.x,R7f.y),0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, vec2(R0f.x,R0f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.z),0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, vec2(R2f.x,R2f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
PV0fx = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.z);
|
||||
PV0fy = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.y);
|
||||
PV0fz = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.x);
|
||||
PV0fw = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.w);
|
||||
R0f.x = R7f.x + intBitsToFloat(0x3bccccce);
|
||||
|
||||
// 1
|
||||
R123f.x = mul_nonIEEE(R3f.w,intBitsToFloat(uf_remappedPS[0].x)) + PV0fw;
|
||||
R123f.y = mul_nonIEEE(R3f.y,intBitsToFloat(uf_remappedPS[0].x)) + PV0fy;
|
||||
R123f.z = mul_nonIEEE(R3f.x,intBitsToFloat(uf_remappedPS[0].x)) + PV0fz;
|
||||
R123f.w = mul_nonIEEE(R3f.z,intBitsToFloat(uf_remappedPS[0].x)) + PV0fx;
|
||||
R0f.y = R7f.y;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.y) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.x) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.w) + backupReg0f;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.z) + R123f.w;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbbccccce);
|
||||
|
||||
// 3
|
||||
R3f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.w) + R123f.z;
|
||||
R3f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.x) + R123f.y;
|
||||
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.z) + R123f.w;
|
||||
R2f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.y) + R123f.x;
|
||||
R1f.y = R7f.y;
|
||||
|
||||
// 4
|
||||
R2f.x = R7f.x + intBitsToFloat(0x3c088889);
|
||||
R2f.y = R7f.y;
|
||||
R6f.z = R7f.y;
|
||||
R6f.x = R7f.x + intBitsToFloat(0xbc088889);
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, vec2(R4f.x,R4f.z),0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, vec2(R0f.x,R0f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.y),0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, vec2(R2f.x,R2f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.x) + R3f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.w) + R3f.x;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.z) + R2f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.y) + R2f.w;
|
||||
R3f.x = R7f.x + intBitsToFloat(0x3c2aaaab);
|
||||
|
||||
// 1
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.x) + R123f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.w) + R123f.y;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.z) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.y) + R123f.w;
|
||||
R3f.y = R7f.y;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.w) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.z) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.y) + R123f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.x) + backupReg0f;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbc2aaaab);
|
||||
|
||||
// 3
|
||||
R0f.x = mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[1].x)) + R123f.x;
|
||||
R0f.y = mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[1].x)) + R123f.y;
|
||||
R5f.z = mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[1].x)) + R123f.z;
|
||||
R5f.w = mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[1].x)) + R123f.w;
|
||||
R1f.y = R7f.y;
|
||||
|
||||
// 4
|
||||
R5f.x = R7f.x + intBitsToFloat(0x3c4cccce);
|
||||
R5f.y = R7f.y;
|
||||
R4f.z = R7f.y;
|
||||
R4f.x = R7f.x + intBitsToFloat(0xbc4cccce);
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, vec2(R6f.x,R6f.z),0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, vec2(R3f.x,R3f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.y),0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, vec2(R5f.x,R5f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.z) + R0f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.y) + R5f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.x) + R5f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.w) + R0f.x;
|
||||
R0f.x = R7f.x + intBitsToFloat(0x3c6eeef0);
|
||||
|
||||
// 1
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.w) + R123f.w;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.y) + R123f.y;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.x) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.z) + backupReg0f;
|
||||
R0f.y = R7f.y;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.y) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.x) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.w) + backupReg0f;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.z) + R123f.w;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbc6eeef0);
|
||||
|
||||
// 3
|
||||
R3f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.w) + R123f.z;
|
||||
R3f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.x) + R123f.y;
|
||||
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.z) + R123f.w;
|
||||
R2f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.y) + R123f.x;
|
||||
R1f.y = R7f.y;
|
||||
|
||||
// 4
|
||||
R2f.x = R7f.x + intBitsToFloat(0x3c888889);
|
||||
R2f.y = R7f.y;
|
||||
R6f.z = R7f.y;
|
||||
R6f.x = R7f.x + intBitsToFloat(0xbc888889);
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, vec2(R4f.x,R4f.z),0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, vec2(R0f.x,R0f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.y),0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, vec2(R2f.x,R2f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.x) + R3f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.w) + R3f.x;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.z) + R2f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.y) + R2f.w;
|
||||
R3f.x = R7f.x + intBitsToFloat(0x3c99999a);
|
||||
|
||||
// 1
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.x) + R123f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.w) + R123f.y;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.z) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.y) + R123f.w;
|
||||
R3f.y = R7f.y;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.w) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.z) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.y) + R123f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.x) + backupReg0f;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbc99999a);
|
||||
|
||||
// 3
|
||||
R0f.x = mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[2].x)) + R123f.x;
|
||||
R0f.y = mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[2].x)) + R123f.y;
|
||||
R5f.z = mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[2].x)) + R123f.z;
|
||||
R5f.w = mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[2].x)) + R123f.w;
|
||||
R1f.y = R7f.y;
|
||||
|
||||
// 4
|
||||
R5f.x = R7f.x + intBitsToFloat(0x3caaaaab);
|
||||
R5f.y = R7f.y;
|
||||
R4f.z = R7f.y;
|
||||
R4f.x = R7f.x + intBitsToFloat(0xbcaaaaab);
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, vec2(R6f.x,R6f.z),0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, vec2(R3f.x,R3f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.y),0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, vec2(R5f.x,R5f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.z) + R0f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.y) + R5f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.x) + R5f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.w) + R0f.x;
|
||||
R0f.x = R7f.x + intBitsToFloat(0x3cbbbbbc);
|
||||
|
||||
// 1
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.w) + R123f.w;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.y) + R123f.y;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.x) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.z) + backupReg0f;
|
||||
R0f.y = R7f.y;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.y) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.x) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.w) + backupReg0f;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.z) + R123f.w;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbcbbbbbc);
|
||||
|
||||
// 3
|
||||
R3f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.w) + R123f.z;
|
||||
R3f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.x) + R123f.y;
|
||||
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.z) + R123f.w;
|
||||
R2f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.y) + R123f.x;
|
||||
R1f.y = R7f.y;
|
||||
|
||||
// 4
|
||||
R2f.x = R7f.x + intBitsToFloat(0x3cccccce);
|
||||
R2f.y = R7f.y;
|
||||
R6f.z = R7f.y;
|
||||
R6f.x = R7f.x + intBitsToFloat(0xbcccccce);
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, vec2(R4f.x,R4f.z),0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, vec2(R0f.x,R0f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.y),0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, vec2(R2f.x,R2f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.x) + R3f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.w) + R3f.x;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.z) + R2f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.y) + R2f.w;
|
||||
R3f.x = R7f.x + intBitsToFloat(0x3cdddddf);
|
||||
|
||||
// 1
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.x) + R123f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.w) + R123f.y;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.z) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.y) + R123f.w;
|
||||
R3f.y = R7f.y;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R1f.w) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R1f.z) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R1f.y) + R123f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R1f.x) + backupReg0f;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbcdddddf);
|
||||
|
||||
// 3
|
||||
R0f.x = mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[3].x)) + R123f.x;
|
||||
R0f.y = mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[3].x)) + R123f.y;
|
||||
R5f.z = mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[3].x)) + R123f.z;
|
||||
R5f.w = mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[3].x)) + R123f.w;
|
||||
R1f.y = R7f.y;
|
||||
|
||||
// 4
|
||||
R5f.x = R7f.x + intBitsToFloat(0x3ceeeef0);
|
||||
R5f.y = R7f.y;
|
||||
R4f.z = R7f.y;
|
||||
R4f.x = R7f.x + intBitsToFloat(0xbceeeef0);
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, vec2(R6f.x,R6f.z),0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, vec2(R3f.x,R3f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.y),0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, vec2(R5f.x,R5f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),R6f.z) + R0f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),R6f.y) + R5f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),R6f.x) + R5f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),R6f.w) + R0f.x;
|
||||
R0f.x = R7f.x + 0.03125;
|
||||
|
||||
// 1
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R3f.w) + R123f.w;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R3f.y) + R123f.y;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R3f.x) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R3f.z) + backupReg0f;
|
||||
R0f.y = R7f.y;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R1f.y) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R1f.x) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R1f.w) + backupReg0f;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R1f.z) + R123f.w;
|
||||
R1f.x = R7f.x + -0.03125;
|
||||
|
||||
// 3
|
||||
R3f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R2f.w) + R123f.z;
|
||||
R3f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R2f.x) + R123f.y;
|
||||
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R2f.z) + R123f.w;
|
||||
R2f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R2f.y) + R123f.x;
|
||||
R1f.y = R7f.y;
|
||||
|
||||
// 4
|
||||
R2f.x = R7f.x + intBitsToFloat(0x3d088889);
|
||||
R2f.y = R7f.y;
|
||||
R6f.z = R7f.y;
|
||||
R6f.x = R7f.x + intBitsToFloat(0xbd088889);
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, vec2(R4f.x,R4f.z),0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, vec2(R0f.x,R0f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.y),0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, vec2(R2f.x,R2f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R4f.x) + R3f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R4f.w) + R3f.x;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R4f.z) + R2f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R4f.y) + R2f.w;
|
||||
R3f.x = R7f.x + intBitsToFloat(0x3d111112);
|
||||
|
||||
// 1
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R0f.x) + R123f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R0f.w) + R123f.y;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R0f.z) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R0f.y) + R123f.w;
|
||||
R3f.y = R7f.y;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R1f.w) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R1f.z) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R1f.y) + R123f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R1f.x) + backupReg0f;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbd111112);
|
||||
|
||||
// 3
|
||||
R0f.x = mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[4].x)) + R123f.x;
|
||||
R0f.y = mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[4].x)) + R123f.y;
|
||||
R5f.z = mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[4].x)) + R123f.z;
|
||||
R5f.w = mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[4].x)) + R123f.w;
|
||||
R1f.y = R7f.y;
|
||||
|
||||
// 4
|
||||
R5f.x = R7f.x + intBitsToFloat(0x3d19999a);
|
||||
R5f.y = R7f.y;
|
||||
R4f.z = R7f.y;
|
||||
R4f.x = R7f.x + intBitsToFloat(0xbd19999a);
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, vec2(R6f.x,R6f.z),0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, vec2(R3f.x,R3f.y),0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, vec2(R1f.x,R1f.y),0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, vec2(R5f.x,R5f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R6f.z) + R0f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R6f.y) + R5f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R6f.x) + R5f.w;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R6f.w) + R0f.x;
|
||||
R0f.x = R7f.x + intBitsToFloat(0x3d222223);
|
||||
|
||||
// 1
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R3f.w) + R123f.w;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R3f.y) + R123f.y;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R3f.x) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R3f.z) + backupReg0f;
|
||||
R0f.y = R7f.y;
|
||||
|
||||
// 2
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.y) + R123f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.x) + R123f.z;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.w) + backupReg0f;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.z) + R123f.w;
|
||||
R7f.x = R7f.x + intBitsToFloat(0xbd222223);
|
||||
|
||||
// 3
|
||||
backupReg0f = R2f.x;
|
||||
backupReg1f = R2f.y;
|
||||
R2f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R2f.w) + R123f.z;
|
||||
R2f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),backupReg0f) + R123f.y;
|
||||
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R2f.z) + R123f.w;
|
||||
R2f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),backupReg1f) + R123f.x;
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, vec2(R4f.x,R4f.z),0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, vec2(R0f.x,R0f.y),0.0).xyzw);
|
||||
R7f.xyzw = (textureLod(textureUnitPS0, vec2(R7f.x,R7f.y),0.0).xyzw);
|
||||
|
||||
// 0
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R4f.x) + R2f.y;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R4f.w) + R2f.x;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R4f.z) + R2f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R4f.y) + R2f.w;
|
||||
|
||||
// 1
|
||||
R123f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R0f.x) + R123f.x;
|
||||
R123f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R0f.w) + R123f.y;
|
||||
R123f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R0f.z) + R123f.z;
|
||||
R123f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R0f.y) + R123f.w;
|
||||
|
||||
// 2
|
||||
R7f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R7f.x) + R123f.x;
|
||||
R7f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R7f.y) + R123f.w;
|
||||
R7f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R7f.z) + R123f.z;
|
||||
R7f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R7f.w) + R123f.y;
|
||||
|
||||
// export
|
||||
passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||
}
|
434
src/TwilightPrincessHD/Enhancements/Bloom/rules.txt
Normal file
434
src/TwilightPrincessHD/Enhancements/Bloom/rules.txt
Normal file
@ -0,0 +1,434 @@
|
||||
[Definition]
|
||||
titleIds = 000500001019C800,000500001019E600,000500001019E500
|
||||
name = Bloom (Glow) and Shadow World Color Grading
|
||||
path = "The Legend of Zelda: Twilight Princess HD/Enhancements/Bloom"
|
||||
description = This pack allows you to adjust bloom and color grading in the shadow world.||It's not recommended to fully disable bloom, as it removes the intended tone of the game.|Bloom is particularly strong in the shadow world with a strong yellow tint, but is also used in the normal world.||Color grading only affects the shadow world. By default, the game darkens and desaturates the image in the shadow world to further distinguish it.
|
||||
#Credits: KoB-Kirito
|
||||
version = 7
|
||||
|
||||
|
||||
[Default]
|
||||
$bloom_custom = 0
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 1.0
|
||||
#$bloom_blur_strength = 1.0
|
||||
$bloom_tint_strength = 1.0
|
||||
$shadow_world_custom = 0
|
||||
$shadow_world_darkening = 1.0
|
||||
$shadow_world_desaturation = 1.0
|
||||
|
||||
|
||||
# Bloom presets for dummies
|
||||
|
||||
[Preset]
|
||||
category = Bloom
|
||||
name = Very High (Default)
|
||||
$bloom_custom = 0
|
||||
$bloom_strength = 1.0
|
||||
#$bloom_blur_strength = 1.0
|
||||
$bloom_tint_strength = 1.0
|
||||
|
||||
[Preset]
|
||||
category = Bloom
|
||||
name = High
|
||||
$bloom_custom = 0
|
||||
$bloom_strength = 0.8
|
||||
#$bloom_blur_strength = 0.8
|
||||
$bloom_tint_strength = 0.8
|
||||
|
||||
[Preset]
|
||||
category = Bloom
|
||||
name = Balanced (Recommended)
|
||||
$bloom_custom = 0
|
||||
$bloom_strength = 0.5
|
||||
#$bloom_blur_strength = 0.5
|
||||
$bloom_tint_strength = 0.8
|
||||
|
||||
[Preset]
|
||||
category = Bloom
|
||||
name = Low
|
||||
$bloom_custom = 0
|
||||
$bloom_strength = 0.4
|
||||
#$bloom_blur_strength = 0.2
|
||||
$bloom_tint_strength = 0.9
|
||||
|
||||
[Preset]
|
||||
category = Bloom
|
||||
name = Very Low
|
||||
$bloom_custom = 0
|
||||
$bloom_strength = 0.2
|
||||
#$bloom_blur_strength = 0.2
|
||||
$bloom_tint_strength = 0.9
|
||||
|
||||
[Preset]
|
||||
category = Bloom
|
||||
name = Custom
|
||||
$bloom_custom = 1
|
||||
|
||||
|
||||
# Overall Bloom Strength (6e2f31b2b2fcab1f)
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 0% (Disables bloom entirely, not recommended)
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 0
|
||||
$bloom_strength = 0.0
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 10%
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 0.1
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 20%
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 0.2
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 30%
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 0.3
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 40%
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 0.4
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 50% (Recommended)
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 0.5
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 60%
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 0.6
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 70%
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 0.7
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 80%
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 0.8
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 90%
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 0.9
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 100% (Default)
|
||||
default = 1
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 1.0
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 110%
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 1.1
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 120%
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 1.2
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 150%
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 1.5
|
||||
|
||||
[Preset]
|
||||
category = Bloom Strength
|
||||
name = 200%
|
||||
condition = $bloom_custom
|
||||
$bloom_enabled = 1
|
||||
$bloom_strength = 2.0
|
||||
|
||||
|
||||
## Blur Strength (ToDo)
|
||||
## Strength of the periodic blur would be most useful, some people feel nausatiated by it
|
||||
## Would recommend to set bloom higher with this reduced
|
||||
## Didn't figure out the shader yet. Most likely better solved via ASM
|
||||
#
|
||||
#[Preset]
|
||||
#category = Periodic Bloom Blur
|
||||
#name = 0% (Bloom will stay static)
|
||||
#condition = $bloom_enabled
|
||||
#$bloom_blur_strength = 0.0
|
||||
#
|
||||
#[Preset]
|
||||
#category = Periodic Bloom Blur
|
||||
#name = 10%
|
||||
#condition = $bloom_enabled
|
||||
#$bloom_blur_strength = 0.1
|
||||
#
|
||||
#[Preset]
|
||||
#category = Periodic Bloom Blur
|
||||
#name = 20%
|
||||
#condition = $bloom_enabled
|
||||
#$bloom_blur_strength = 0.2
|
||||
#
|
||||
#[Preset]
|
||||
#category = Periodic Bloom Blur
|
||||
#name = 30%
|
||||
#condition = $bloom_enabled
|
||||
#$bloom_blur_strength = 0.3
|
||||
#
|
||||
#[Preset]
|
||||
#category = Periodic Bloom Blur
|
||||
#name = 40%
|
||||
#condition = $bloom_enabled
|
||||
#$bloom_blur_strength = 0.4
|
||||
#
|
||||
#[Preset]
|
||||
#category = Periodic Bloom Blur
|
||||
#name = 50% (Recommended)
|
||||
#condition = $bloom_enabled
|
||||
#$bloom_blur_strength = 0.5
|
||||
#
|
||||
#[Preset]
|
||||
#category = Periodic Bloom Blur
|
||||
#name = 60%
|
||||
#condition = $bloom_enabled
|
||||
#$bloom_blur_strength = 0.6
|
||||
#
|
||||
#[Preset]
|
||||
#category = Periodic Bloom Blur
|
||||
#name = 70%
|
||||
#condition = $bloom_enabled
|
||||
#$bloom_blur_strength = 0.7
|
||||
#
|
||||
#[Preset]
|
||||
#category = Periodic Bloom Blur
|
||||
#name = 80%
|
||||
#condition = $bloom_enabled
|
||||
#$bloom_blur_strength = 0.8
|
||||
#
|
||||
#[Preset]
|
||||
#category = Periodic Bloom Blur
|
||||
#name = 90%
|
||||
#condition = $bloom_enabled
|
||||
#$bloom_blur_strength = 0.9
|
||||
#
|
||||
#[Preset]
|
||||
#category = Periodic Bloom Blur
|
||||
#name = 100% (Native)
|
||||
#condition = $bloom_enabled
|
||||
#default = 1
|
||||
#$bloom_blur_strength = 1.0
|
||||
|
||||
|
||||
# Area Specific Bloom Tint (49865bd2e62efda1)
|
||||
|
||||
[Preset]
|
||||
category = Area-Specific Bloom Tint Strength
|
||||
name = 0% (Same white bloom color everywhere)
|
||||
condition = $bloom_enabled + $bloom_custom > 1
|
||||
$bloom_tint_strength = 0.0
|
||||
|
||||
[Preset]
|
||||
category = Area-Specific Bloom Tint Strength
|
||||
name = 10%
|
||||
condition = $bloom_enabled + $bloom_custom > 1
|
||||
$bloom_tint_strength = 0.1
|
||||
|
||||
[Preset]
|
||||
category = Area-Specific Bloom Tint Strength
|
||||
name = 20%
|
||||
condition = $bloom_enabled + $bloom_custom > 1
|
||||
$bloom_tint_strength = 0.2
|
||||
|
||||
[Preset]
|
||||
category = Area-Specific Bloom Tint Strength
|
||||
name = 30%
|
||||
condition = $bloom_enabled + $bloom_custom > 1
|
||||
$bloom_tint_strength = 0.3
|
||||
|
||||
[Preset]
|
||||
category = Area-Specific Bloom Tint Strength
|
||||
name = 40%
|
||||
condition = $bloom_enabled + $bloom_custom > 1
|
||||
$bloom_tint_strength = 0.4
|
||||
|
||||
[Preset]
|
||||
category = Area-Specific Bloom Tint Strength
|
||||
name = 50%
|
||||
condition = $bloom_enabled + $bloom_custom > 1
|
||||
$bloom_tint_strength = 0.5
|
||||
|
||||
[Preset]
|
||||
category = Area-Specific Bloom Tint Strength
|
||||
name = 60%
|
||||
condition = $bloom_enabled + $bloom_custom > 1
|
||||
$bloom_tint_strength = 0.6
|
||||
|
||||
[Preset]
|
||||
category = Area-Specific Bloom Tint Strength
|
||||
name = 70%
|
||||
condition = $bloom_enabled + $bloom_custom > 1
|
||||
$bloom_tint_strength = 0.7
|
||||
|
||||
[Preset]
|
||||
category = Area-Specific Bloom Tint Strength
|
||||
name = 80% (Recommended)
|
||||
condition = $bloom_enabled + $bloom_custom > 1
|
||||
$bloom_tint_strength = 0.8
|
||||
|
||||
[Preset]
|
||||
category = Area-Specific Bloom Tint Strength
|
||||
name = 90%
|
||||
condition = $bloom_enabled + $bloom_custom > 1
|
||||
$bloom_tint_strength = 0.9
|
||||
|
||||
[Preset]
|
||||
category = Area-Specific Bloom Tint Strength
|
||||
name = 100% (Default)
|
||||
condition = $bloom_enabled + $bloom_custom > 1
|
||||
default = 1
|
||||
$bloom_tint_strength = 1.0
|
||||
|
||||
|
||||
|
||||
# Shadow world color grading presets for dummies
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Color Grading
|
||||
name = Very Dark (Default)
|
||||
default = 1
|
||||
$shadow_world_custom = 0
|
||||
$shadow_world_darkening = 1.0
|
||||
$shadow_world_desaturation = 1.0
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Color Grading
|
||||
name = Dark
|
||||
$shadow_world_custom = 0
|
||||
$shadow_world_darkening = 0.75
|
||||
$shadow_world_desaturation = 0.75
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Color Grading
|
||||
name = Balanced
|
||||
$shadow_world_custom = 0
|
||||
$shadow_world_darkening = 0.5
|
||||
$shadow_world_desaturation = 0.5
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Color Grading
|
||||
name = Bright (Recommended)
|
||||
$shadow_world_custom = 0
|
||||
$shadow_world_darkening = 0.25
|
||||
$shadow_world_desaturation = 0.5
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Color Grading
|
||||
name = Very Bright
|
||||
$shadow_world_custom = 0
|
||||
$shadow_world_darkening = 0.0
|
||||
$shadow_world_desaturation = 0.5
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Color Grading
|
||||
name = Custom
|
||||
$shadow_world_custom = 1
|
||||
|
||||
|
||||
# Shadow World Brightness (49865bd2e62efda1)
|
||||
# the alpha of the bloom color tint in the shadow world is used to darken the image
|
||||
# this is separated, because it is not affected by bloom strength at all
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Brightness
|
||||
name = 60% (Default)
|
||||
default = 1
|
||||
condition = $shadow_world_custom
|
||||
$shadow_world_darkening = 1.0
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Brightness
|
||||
name = 70%
|
||||
condition = $shadow_world_custom
|
||||
$shadow_world_darkening = 0.75
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Brightness
|
||||
name = 80%
|
||||
condition = $shadow_world_custom
|
||||
$shadow_world_darkening = 0.5
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Brightness
|
||||
name = 90% (Recommended)
|
||||
condition = $shadow_world_custom
|
||||
$shadow_world_darkening = 0.25
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Brightness
|
||||
name = 100% (Shadow world as bright as normal world)
|
||||
condition = $shadow_world_custom
|
||||
$shadow_world_darkening = 0.0
|
||||
|
||||
|
||||
# Shadow World Color Desaturation (5f422bf63e25be7f)
|
||||
# a custom shader is used exclusivly in the shadow world to desaturate its colors
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Saturation
|
||||
name = 60% (Default)
|
||||
default = 1
|
||||
condition = $shadow_world_custom
|
||||
$shadow_world_desaturation = 1.0
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Saturation
|
||||
name = 70%
|
||||
condition = $shadow_world_custom
|
||||
$shadow_world_desaturation = 0.75
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Saturation
|
||||
name = 80% (Recommended)
|
||||
condition = $shadow_world_custom
|
||||
$shadow_world_desaturation = 0.5
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Saturation
|
||||
name = 90%
|
||||
condition = $shadow_world_custom
|
||||
$shadow_world_desaturation = 0.25
|
||||
|
||||
[Preset]
|
||||
category = Shadow World Saturation
|
||||
name = 100% (Shadow world as saturated as normal world)
|
||||
condition = $shadow_world_custom
|
||||
$shadow_world_desaturation = 0.0
|
@ -0,0 +1,245 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
// shader c14019840473ff86
|
||||
// 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 = 2) uniform ufBlock
|
||||
{
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
// end of shader inputs/outputs
|
||||
|
||||
const float hazeFactor = 0.1;
|
||||
const float gamma = $gamma; // 1.0 is neutral Botw is already colour graded at this stage
|
||||
const float exposure = $exposure; // 1.0 is neutral
|
||||
const float vibrance = $vibrance; // 0.0 is neutral
|
||||
const float crushContrast = $crushContrast; // 0.0 is neutral. Use small increments, loss of shadow detail
|
||||
const float contrastCurve = $contrastCurve;
|
||||
|
||||
vec3 RGB_Lift = vec3($redShadows, $greenShadows , $blueSadows); // [0.000 to 2.000] Adjust shadows for Red, Green and Blue.
|
||||
vec3 RGB_Gamma = vec3($redMid ,$greenMid, $blueMid); // [0.000 to 2.000] Adjust midtones for Red, Green and Blue
|
||||
vec3 RGB_Gain = vec3($redHilight, $greenHilight, $blueHilight); // [0.000 to 2.000] Adjust highlights for Red, Green and Blue
|
||||
//lumasharpen
|
||||
const float sharp_mix = $sharp_mix;
|
||||
const float sharp_strength = 2.0;
|
||||
const float sharp_clamp = 0.75;
|
||||
const float offset_bias = 1.0;
|
||||
float Sigmoid (float x) {
|
||||
|
||||
return 1.0 / (1.0 + (exp(-(x - 0.5) * 5.5)));
|
||||
}
|
||||
|
||||
|
||||
#define px (1.0/1920.0*uf_fragCoordScale.x)
|
||||
#define py (1.0/1080.0*uf_fragCoordScale.y)
|
||||
#define CoefLuma vec3(0.2126, 0.7152, 0.0722)
|
||||
|
||||
float lumasharping(sampler2D tex, vec2 pos) {
|
||||
vec4 colorInput = texture(tex, pos);
|
||||
|
||||
vec3 ori = colorInput.rgb;
|
||||
|
||||
// -- Combining the strength and luma multipliers --
|
||||
vec3 sharp_strength_luma = (CoefLuma * sharp_strength);
|
||||
|
||||
// -- Gaussian filter --
|
||||
// [ .25, .50, .25] [ 1 , 2 , 1 ]
|
||||
// [ .50, 1, .50] = [ 2 , 4 , 2 ]
|
||||
// [ .25, .50, .25] [ 1 , 2 , 1 ]
|
||||
|
||||
vec3 blur_ori = texture(tex, pos + vec2(px, -py) * 0.5 * offset_bias).rgb; // South East
|
||||
blur_ori += texture(tex, pos + vec2(-px, -py) * 0.5 * offset_bias).rgb; // South West
|
||||
blur_ori += texture(tex, pos + vec2(px, py) * 0.5 * offset_bias).rgb; // North East
|
||||
blur_ori += texture(tex, pos + vec2(-px, py) * 0.5 * offset_bias).rgb; // North West
|
||||
|
||||
blur_ori *= 0.25; // ( /= 4) Divide by the number of texture fetches
|
||||
|
||||
// -- Calculate the sharpening --
|
||||
vec3 sharp = ori - blur_ori; //Subtracting the blurred image from the original image
|
||||
|
||||
// -- Adjust strength of the sharpening and clamp it--
|
||||
vec4 sharp_strength_luma_clamp = vec4(sharp_strength_luma * (0.5 / sharp_clamp), 0.5); //Roll part of the clamp into the dot
|
||||
|
||||
float sharp_luma = clamp((dot(vec4(sharp, 1.0), sharp_strength_luma_clamp)), 0.0, 1.0); //Calculate the luma, adjust the strength, scale up and clamp
|
||||
sharp_luma = (sharp_clamp * 2.0) * sharp_luma - sharp_clamp; //scale down
|
||||
|
||||
return sharp_luma;
|
||||
}
|
||||
|
||||
vec3 LiftGammaGainPass(vec3 colorInput)
|
||||
{ //reshade BSD https://reshade.me , Alexkiri port
|
||||
vec3 color = colorInput;
|
||||
color = color * (1.5 - 0.5 * RGB_Lift) + 0.5 * RGB_Lift - 0.5;
|
||||
color = clamp(color, 0.0, 1.0);
|
||||
color *= RGB_Gain;
|
||||
color = pow(color, 1.0 / RGB_Gamma);
|
||||
return clamp(color, 0.0, 1.0);
|
||||
}
|
||||
|
||||
vec3 contrasty(vec3 colour){
|
||||
vec3 fColour = (colour.xyz);
|
||||
//fColour = LiftGammaGainPass(fColour);
|
||||
|
||||
fColour = clamp(exposure * fColour, 0.0, 1.0);
|
||||
fColour = pow(fColour, vec3(1.0 / gamma));
|
||||
float luminance = fColour.r*0.299 + fColour.g*0.587 + fColour.b*0.114;
|
||||
float mn = min(min(fColour.r, fColour.g), fColour.b);
|
||||
float mx = max(max(fColour.r, fColour.g), fColour.b);
|
||||
float sat = (1.0 - (mx - mn)) * (1.0 - mx) * luminance * 5.0;
|
||||
vec3 lightness = vec3((mn + mx) / 2.0);
|
||||
fColour = LiftGammaGainPass(fColour);
|
||||
// vibrance
|
||||
fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat);
|
||||
fColour = max(vec3(0.0), fColour - vec3(crushContrast));
|
||||
return fColour;
|
||||
}
|
||||
|
||||
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 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;
|
||||
float scaleRes = uf_fragCoordScale.x;
|
||||
R0f = passParameterSem0;
|
||||
R0f.w = (textureGather(textureUnitPS1, R0f.xy).y);
|
||||
// 0
|
||||
R1f.x = R0f.x + intBitsToFloat(0xba088889);
|
||||
R1f.y = R0f.y + intBitsToFloat(0xba72b9d6);
|
||||
R2f.z = R0f.x;
|
||||
R2f.y = R0f.y + intBitsToFloat(0xba72b9d6);
|
||||
PS0f = R2f.y;
|
||||
// 1
|
||||
R3f.x = R0f.x + intBitsToFloat(0xba088889);
|
||||
R3f.y = R0f.y;
|
||||
R1f.xyzw = (textureGather(textureUnitPS1, R1f.xy).xyzw);
|
||||
R2f.yz = (textureGather(textureUnitPS1, R2f.zy).yz);
|
||||
R3f.xy = (textureGather(textureUnitPS1, R3f.xy).xy);
|
||||
// 0
|
||||
PV0f.x = R2f.z + R3f.x;
|
||||
PV0f.y = R1f.w + R0f.w;
|
||||
PV0f.z = R1f.z + R3f.y;
|
||||
PV0f.w = R1f.x + R2f.y;
|
||||
// 1
|
||||
R123f.x = (R1f.y * 2.0 + -(PV0f.x));
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (R1f.y * 2.0 + -(PV0f.y));
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (R1f.y * 2.0 + -(PV0f.z));
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (R1f.y * 2.0 + -(PV0f.w));
|
||||
PV1f.w = R123f.w;
|
||||
// 2
|
||||
PV0f.x = max(PV1f.x, -(PV1f.x));
|
||||
PV0f.y = max(PV1f.y, -(PV1f.y));
|
||||
PV0f.z = max(PV1f.z, -(PV1f.z));
|
||||
PV0f.w = max(PV1f.w, -(PV1f.w));
|
||||
// 3
|
||||
PV1f.x = PV0f.x + intBitsToFloat(0xb400d959);
|
||||
PV1f.y = PV0f.y + intBitsToFloat(0xb400d959);
|
||||
PV1f.z = PV0f.z + intBitsToFloat(0xb400d959);
|
||||
PV1f.w = PV0f.w + intBitsToFloat(0xb400d959);
|
||||
// 4
|
||||
R123f.x = intBitsToFloat(((PV1f.w >= 0.0)?(floatBitsToInt(1.0)):(0)));
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = intBitsToFloat(((PV1f.z >= 0.0)?(floatBitsToInt(1.0)):(0)));
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = intBitsToFloat(((PV1f.y >= 0.0)?(floatBitsToInt(1.0)):(0)));
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = intBitsToFloat(((PV1f.x >= 0.0)?(floatBitsToInt(1.0)):(0)));
|
||||
PV0f.w = R123f.w;
|
||||
// 5
|
||||
tempf.x = dot(vec4(PV0f.x,PV0f.y,PV0f.z,PV0f.w),vec4(0.25,0.25,0.25,0.25));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
// 6
|
||||
R127f.z = PV1f.x * intBitsToFloat(0x3f400000)* scaleRes;
|
||||
PV0f.z = R127f.z;
|
||||
// 7
|
||||
R1f.x = (PV0f.z * intBitsToFloat(0xba088889) * scaleRes + R0f.x);
|
||||
R1f.y = R0f.y;
|
||||
R2f.z = R0f.x;
|
||||
R2f.y = (PV0f.z * intBitsToFloat(0xba72b9d6) * scaleRes + R0f.y);
|
||||
PS1f = R2f.y;
|
||||
// 8
|
||||
R3f.x = (R127f.z * intBitsToFloat(0x3a088889) * scaleRes + R0f.x);
|
||||
R3f.y = R0f.y;
|
||||
R0f.w = (R127f.z * intBitsToFloat(0x3a72b9d6) * scaleRes + R0f.y);
|
||||
R1f.xyzw = (texture(textureUnitPS0, R1f.xy).xyzw);
|
||||
R2f.xyzw = (texture(textureUnitPS0, R2f.zy).xyzw);
|
||||
R3f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
|
||||
R0f.xyzw = (texture(textureUnitPS0, R0f.xw).xyzw);
|
||||
// 0
|
||||
PV0f.x = R1f.w + R2f.w;
|
||||
PV0f.y = R1f.z + R2f.z;
|
||||
PV0f.z = R1f.y + R2f.y;
|
||||
PV0f.w = R1f.x + R2f.x;
|
||||
// 1
|
||||
PV1f.x = R3f.w + PV0f.x;
|
||||
PV1f.y = R3f.z + PV0f.y;
|
||||
PV1f.z = R3f.y + PV0f.z;
|
||||
PV1f.w = R3f.x + PV0f.w;
|
||||
// 2
|
||||
backupReg0f = R0f.y;
|
||||
backupReg1f = R0f.x;
|
||||
PV0f.x = R0f.w + PV1f.x;
|
||||
PV0f.y = R0f.z + PV1f.y;
|
||||
PV0f.z = backupReg0f + PV1f.z;
|
||||
PV0f.w = backupReg1f + PV1f.w;
|
||||
// 3
|
||||
R0f.x = PV0f.w * 0.25;
|
||||
R0f.y = PV0f.z * 0.25;
|
||||
R0f.z = PV0f.y * 0.25;
|
||||
R0f.w = PV0f.x * 0.25;
|
||||
// export
|
||||
|
||||
R0f.xyz = contrasty(R0f.xyz);
|
||||
R0f.xyz = mix(R0f.xyz, smoothstep(0.0, 1.0, R0f.xyz), contrastCurve);
|
||||
float smask = lumasharping(textureUnitPS0, passParameterSem0.xy);
|
||||
vec3 temp3 = R0f.xyz;
|
||||
R0f.xyz = mix(R0f.xyz, (temp3.xyz += (smask)), sharp_mix);
|
||||
|
||||
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
}
|
208
src/TwilightPrincessHD/Enhancements/Contrasty/rules.txt
Normal file
208
src/TwilightPrincessHD/Enhancements/Contrasty/rules.txt
Normal file
@ -0,0 +1,208 @@
|
||||
[Definition]
|
||||
titleIds = 000500001019C800,000500001019E600,000500001019E500
|
||||
name = Contrasty
|
||||
path = "The Legend of Zelda: Twilight Princess HD/Enhancements/Contrasty"
|
||||
description = This pack tweaks the colors and contrast to whatever preset you set it as. You can also make your own preset by editing the Default preset in the Contrasty folder from the game's graphic packs.|Made by getdls.
|
||||
#Credits: getdls
|
||||
version = 6
|
||||
|
||||
[Default]
|
||||
$redShadows = 1.0
|
||||
$greenShadows = 1.0
|
||||
$blueSadows = 1.0
|
||||
$redMid = 1.0
|
||||
$greenMid = 1.0
|
||||
$blueMid = 1.0
|
||||
$redHilight = 1.0
|
||||
$greenHilight =1.0
|
||||
$blueHilight = 1.0
|
||||
|
||||
$contrastCurve = 0.0
|
||||
$hazeFactor = 1.0
|
||||
# $bloom = 1.0
|
||||
$gamma = 1.0
|
||||
$exposure = 1.0
|
||||
$vibrance = 0.0
|
||||
$crushContrast = 0.0
|
||||
# $bleach = 1.0
|
||||
$sharp_mix = 0.0
|
||||
|
||||
[Preset]
|
||||
name = default
|
||||
|
||||
[Preset] # Preserve original washed out look, but balances bloom white point towards neutral
|
||||
name = Neutral Hi-lights
|
||||
$redShadows = 1.0
|
||||
$greenShadows = 1.0 #1.01
|
||||
$blueSadows = 1.01 #1.02
|
||||
$redMid = 0.98
|
||||
$greenMid = 0.99
|
||||
$blueMid = 1.01
|
||||
$redHilight = 1.0
|
||||
$greenHilight = 1.01 #.86
|
||||
$blueHilight = 1.15
|
||||
|
||||
$contrastCurve = 0.0
|
||||
$hazeFactor = 0.1
|
||||
# $bloom = 1.0
|
||||
$gamma = 1.0
|
||||
$exposure = 1.0
|
||||
$vibrance = 0.25
|
||||
$crushContrast = 0.0
|
||||
# $bleach = 0.85
|
||||
$sharp_mix = 0.0
|
||||
|
||||
[Preset] #Warm and washed out light-sources and bloom, original look "enhanced".
|
||||
name = Warm glow
|
||||
$redShadows = 1.0
|
||||
$greenShadows = 1.0
|
||||
$blueSadows = 1.0
|
||||
$redMid = 0.98
|
||||
$greenMid = 0.98
|
||||
$blueMid = 1.0
|
||||
$redHilight = 1.0
|
||||
$greenHilight =1.0
|
||||
$blueHilight = 1.0
|
||||
|
||||
$contrastCurve = 0.5
|
||||
$hazeFactor = 0.71
|
||||
# $bloom = 0.85
|
||||
$gamma = 1.1
|
||||
$exposure = 1.07
|
||||
$vibrance = 0.15
|
||||
$crushContrast = 0.00
|
||||
# $bleach = 0.85
|
||||
$sharp_mix = 0.05
|
||||
|
||||
[Preset] # Colourful midway between original and cold
|
||||
name = Warm / Colorful
|
||||
$redShadows = 0.96
|
||||
$greenShadows = 0.97
|
||||
$blueSadows = 1.01
|
||||
$redMid = 0.94
|
||||
$greenMid = 0.96
|
||||
$blueMid = 1.01
|
||||
$redHilight = 0.97
|
||||
$greenHilight = 0.99
|
||||
$blueHilight = 1.01
|
||||
|
||||
$contrastCurve = 0.25
|
||||
$hazeFactor = 0.1
|
||||
# $bloom = 1.0
|
||||
$gamma = 1.075
|
||||
$exposure = 1.01
|
||||
$vibrance = 0.55
|
||||
$crushContrast = 0.0
|
||||
# $bleach = 0.85
|
||||
$sharp_mix = 0.05
|
||||
|
||||
[Preset] #Neutral/cold white point, light and shadows interplay, caves are dark. Some discoloration of multi layer fx
|
||||
name = Cold
|
||||
$redShadows = 0.99 #0.99
|
||||
$greenShadows = 1.0 # 1.0
|
||||
$blueSadows = 1.0 #1.0 #1.01
|
||||
$redMid = 0.88 #0.87
|
||||
$greenMid = 0.925 #0.9 #0.88
|
||||
$blueMid = 1.0
|
||||
$redHilight = 1.0
|
||||
$greenHilight = 1.01 #.86
|
||||
$blueHilight = 1.11 #1.14
|
||||
|
||||
$contrastCurve = 0.25
|
||||
$hazeFactor = 0.1
|
||||
|
||||
$gamma = 1.025
|
||||
$exposure = 1.025
|
||||
$vibrance = 0.48
|
||||
$crushContrast = 0.0
|
||||
# $bleach = 0.875
|
||||
$sharp_mix = 0.00
|
||||
|
||||
[Preset] #Warm colour palette, light and shadows interplay, caves are dark.
|
||||
name = Warm contrast crush
|
||||
$redShadows = 1.0 #1.02 #0.99
|
||||
$greenShadows = 1.0 #1.05 # 1.0
|
||||
$blueSadows = 0.98 #1.0 #1.01
|
||||
$redMid = 0.96 #0.87
|
||||
$greenMid = 1.04 #0.9 #0.88
|
||||
$blueMid = 1.10
|
||||
$redHilight = 0.99
|
||||
$greenHilight = 0.99 #.86
|
||||
$blueHilight = 1.05 #1.14
|
||||
|
||||
$contrastCurve = 0.75
|
||||
$hazeFactor = 0.1
|
||||
# $bloom = 0.975
|
||||
$gamma = 1.03
|
||||
$exposure = 1.01
|
||||
$vibrance = 0.25
|
||||
$crushContrast = 0.0
|
||||
# $bleach = 0.875
|
||||
$sharp_mix = 0.00
|
||||
|
||||
[Preset] #Neutral/cold white point, light and shadows interplay, caves are dark. Some discoloration of multi layer fx
|
||||
name = Cold contrast crush
|
||||
$redShadows = 1.01 #1.02 #0.99
|
||||
$greenShadows = 1.03 #1.05 # 1.0
|
||||
$blueSadows = 1.04 #1.0 #1.01
|
||||
$redMid = 0.99 #0.87
|
||||
$greenMid = 1.06 #0.9 #0.88
|
||||
$blueMid = 1.12
|
||||
$redHilight = 0.98
|
||||
$greenHilight = 0.97 #.86
|
||||
$blueHilight = 1.08 #1.14
|
||||
|
||||
$contrastCurve = 0.75
|
||||
$hazeFactor = 0.1
|
||||
# $bloom = 0.975
|
||||
$gamma = 1.01
|
||||
$exposure = 1.01
|
||||
$vibrance = 0.29
|
||||
$crushContrast = 0.0
|
||||
# $bleach = 0.875
|
||||
$sharp_mix = 0.00
|
||||
|
||||
[Preset] #Neutral/cold white point, light and shadows interplay, caves are dark. Some discoloration of multi layer fx
|
||||
name = Cold contrast preserve highlights
|
||||
$redShadows = 1.01 #1.02 #0.99
|
||||
$greenShadows = 1.02 #1.05 # 1.0
|
||||
$blueSadows = 1.04 #1.0 #1.01
|
||||
$redMid = 0.97 #0.87
|
||||
$greenMid = 1.06 #0.9 #0.88
|
||||
$blueMid = 1.14
|
||||
$redHilight = 0.98
|
||||
$greenHilight = 0.97 #.86
|
||||
$blueHilight = 1.09 #1.14
|
||||
|
||||
$contrastCurve = 0.25
|
||||
$hazeFactor = 0.1
|
||||
# $bloom = 0.975
|
||||
$gamma = 0.75
|
||||
$exposure = 1.125
|
||||
$vibrance = 0.35
|
||||
$crushContrast = 0.0
|
||||
# $bleach = 0.875
|
||||
$sharp_mix = 0.00
|
||||
|
||||
|
||||
[Preset] # jff
|
||||
name = Skyward Swordish
|
||||
$redShadows = 0.95
|
||||
$greenShadows = 0.95
|
||||
$blueSadows = 1.0
|
||||
$redMid = 0.95
|
||||
$greenMid = 0.97
|
||||
$blueMid = 1.04
|
||||
$redHilight = 0.99
|
||||
$greenHilight =1.0
|
||||
$blueHilight = 1.01
|
||||
|
||||
$contrastCurve = 0.95
|
||||
$hazeFactor = 0.71
|
||||
# $bloom = 0.85
|
||||
$gamma = 1.25
|
||||
$exposure = 1.1
|
||||
$vibrance = 1.25
|
||||
$crushContrast = 0.00
|
||||
# $bleach = 0.85
|
||||
$sharp_mix = 0.05
|
@ -0,0 +1,82 @@
|
||||
#version 450
|
||||
#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 49865bd2e62efda1
|
||||
//dark world bloom
|
||||
|
||||
const float bloom = $bloom;
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[1];
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[1];
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
// 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);
|
||||
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||
float PS0f = 0.0, PS1f = 0.0;
|
||||
vec4 tempf = vec4(0.0);
|
||||
float tempResultf;
|
||||
int tempResulti;
|
||||
ivec4 ARi = ivec4(0);
|
||||
bool predResult = true;
|
||||
vec3 cubeMapSTM;
|
||||
int cubeMapFaceId;
|
||||
R0f = passParameterSem0;
|
||||
R0f.xyz = (textureLod(textureUnitPS0, R0f.xy,0.0).xyz)*bloom;
|
||||
// 0
|
||||
backupReg0f = R0f.y;
|
||||
backupReg1f = R0f.x;
|
||||
PV0f.x = mul_nonIEEE(R0f.z, intBitsToFloat(uf_remappedPS[0].z));
|
||||
PV0f.y = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedPS[0].y));
|
||||
PV0f.z = mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedPS[0].x));
|
||||
PV0f.w = intBitsToFloat(uf_remappedPS[0].w);
|
||||
// 1
|
||||
PV1f.x = max(PV0f.w, 0.0);
|
||||
PV1f.y = max(PV0f.x, 0.0);
|
||||
PV1f.z = max(PV0f.y, 0.0);
|
||||
PV1f.w = max(PV0f.z, 0.0);
|
||||
// 2
|
||||
R0f.x = min(PV1f.w, 1.0);
|
||||
R0f.y = min(PV1f.z, 1.0);
|
||||
R0f.z = min(PV1f.y, 1.0);
|
||||
R0f.w = min(PV1f.x, 1.0);
|
||||
// export
|
||||
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
#version 450
|
||||
#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 5f422bf63e25be7f // Bleach pass cutscene
|
||||
|
||||
const float bleach = $bleach;
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[1];
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[1];
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) 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);
|
||||
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 = passParameterSem1;
|
||||
R0f.w = (texture(textureUnitPS0, R0f.xy).x);
|
||||
// 0
|
||||
PV0f.x = intBitsToFloat(uf_remappedPS[0].x) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.z = intBitsToFloat(uf_remappedPS[0].z) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.w = intBitsToFloat(uf_remappedPS[0].y) * intBitsToFloat(0x3f7f0000);
|
||||
R1f.w = intBitsToFloat(uf_remappedPS[0].w);
|
||||
R1f.w = clamp(R1f.w, 0.0, 1.0);
|
||||
PS0f = R1f.w;
|
||||
// 1
|
||||
PV1f.x = fract(PV0f.w);
|
||||
PV1f.y = fract(PV0f.x);
|
||||
PV1f.w = fract(PV0f.z);
|
||||
// 2
|
||||
PV0f.x = PV1f.w * intBitsToFloat(0x3f808081);
|
||||
PV0f.y = PV1f.x * intBitsToFloat(0x3f808081);
|
||||
PV0f.z = PV1f.y * intBitsToFloat(0x3f808081);
|
||||
// 3
|
||||
R1f.x = mul_nonIEEE(R0f.w, PV0f.z);
|
||||
R1f.x = clamp(R1f.x, 0.0, 1.0);
|
||||
R1f.y = mul_nonIEEE(R0f.w, PV0f.y);
|
||||
R1f.y = clamp(R1f.y, 0.0, 1.0);
|
||||
R1f.z = mul_nonIEEE(R0f.w, PV0f.x);
|
||||
R1f.z = clamp(R1f.z, 0.0, 1.0);
|
||||
// export
|
||||
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w) * bleach;
|
||||
}
|
@ -0,0 +1,367 @@
|
||||
#version 450
|
||||
#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 95a5a89d62998e0d
|
||||
|
||||
// blur
|
||||
const float bloom = $bloom;
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) 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;
|
||||
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 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);
|
||||
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;
|
||||
float scaler;
|
||||
int tempResulti;
|
||||
ivec4 ARi = ivec4(0);
|
||||
bool predResult = true;
|
||||
vec3 cubeMapSTM;
|
||||
int cubeMapFaceId;
|
||||
R0f = GET_FRAGCOORD();
|
||||
scaler = uf_fragCoordScale.x;
|
||||
// 0
|
||||
R7f.x = R0f.x * intBitsToFloat(0x3b088889);
|
||||
PV0f.x = R7f.x;
|
||||
R7f.y = R0f.y * intBitsToFloat(0x3b72b9d6);
|
||||
PV0f.y = R7f.y;
|
||||
// 1
|
||||
R0f.x = PV0f.x;
|
||||
R0f.y = PV0f.y + intBitsToFloat(0x3b72b9d6) * scaler;
|
||||
R1f.z = PV0f.x;
|
||||
R1f.y = PV0f.y + intBitsToFloat(0xbb72b9d6) * scaler;
|
||||
PS1f = R1f.y;
|
||||
// 2
|
||||
R2f.x = R7f.x;
|
||||
R2f.y = R7f.y + intBitsToFloat(0x3bf2b9d6) * scaler;
|
||||
R4f.z = R7f.x;
|
||||
R4f.y = R7f.y + intBitsToFloat(0xbbf2b9d6) * scaler;
|
||||
PS0f = R4f.y;
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, R7f.xy,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.zy,0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw);
|
||||
// 0
|
||||
backupReg0f = R0f.x;
|
||||
backupReg1f = R0f.w;
|
||||
PV0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.y);
|
||||
PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.z);
|
||||
PV0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg0f);
|
||||
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg1f);
|
||||
R0f.y = R7f.y + intBitsToFloat(0x3c360b60) * scaler;
|
||||
PS0f = R0f.y;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(R3f.y,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.x);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(R3f.w,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.w);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(R3f.x,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(R3f.z,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.y);
|
||||
PV1f.w = R123f.w;
|
||||
R0f.x = R7f.x;
|
||||
PS1f = R0f.x;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.y) + PV1f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.x) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.w) + PV1f.y);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.z) + PV1f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbc360b60) * scaler;
|
||||
PS0f = R1f.y;
|
||||
// 3
|
||||
backupReg0f = R2f.z;
|
||||
R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.x) + PV0f.y);
|
||||
R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.y) + PV0f.x);
|
||||
R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.w) + PV0f.z);
|
||||
R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),backupReg0f) + PV0f.w);
|
||||
R1f.x = R7f.x;
|
||||
PS1f = R1f.x;
|
||||
// 4
|
||||
R2f.x = R7f.x;
|
||||
R2f.y = R7f.y + intBitsToFloat(0x3c72b9d6) * scaler;
|
||||
R6f.z = R7f.x;
|
||||
R6f.y = R7f.y + intBitsToFloat(0xbc72b9d6) * scaler;
|
||||
PS0f = R6f.y;
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, R4f.zy,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.x) + R3f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.w) + R2f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.z) + R2f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.y) + R3f.y);
|
||||
PV0f.w = R123f.w;
|
||||
R3f.y = R7f.y + intBitsToFloat(0x3c97b426) * scaler;
|
||||
PS0f = R3f.y;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.w) + PV0f.y);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.x) + PV0f.x);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.z) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.y) + PV0f.w);
|
||||
PV1f.w = R123f.w;
|
||||
R3f.x = R7f.x;
|
||||
PS1f = R3f.x;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.w) + PV1f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.z) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.y) + PV1f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.x) + PV1f.y);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbc97b426) * scaler;
|
||||
PS0f = R1f.y;
|
||||
// 3
|
||||
R0f.x = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.y);
|
||||
R0f.y = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.x);
|
||||
R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.z);
|
||||
R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.w);
|
||||
R1f.x = R7f.x;
|
||||
PS1f = R1f.x;
|
||||
// 4
|
||||
R5f.x = R7f.x;
|
||||
R5f.y = R7f.y + intBitsToFloat(0x3cb60b60) * scaler;
|
||||
R4f.z = R7f.x;
|
||||
R4f.y = R7f.y + intBitsToFloat(0xbcb60b60) * scaler;
|
||||
PS0f = R4f.y;
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, R6f.zy,0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.z) + R0f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.y) + R5f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.x) + R5f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.w) + R0f.y);
|
||||
PV0f.w = R123f.w;
|
||||
R0f.y = R7f.y + intBitsToFloat(0x3cd4629b) * scaler;
|
||||
PS0f = R0f.y;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.y) + PV0f.y);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.w) + PV0f.w);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.x) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.z) + PV0f.x);
|
||||
PV1f.w = R123f.w;
|
||||
R0f.x = R7f.x;
|
||||
PS1f = R0f.x;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.y) + PV1f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.x) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.w) + PV1f.y);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.z) + PV1f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbcd4629b) * scaler;
|
||||
PS0f = R1f.y;
|
||||
// 3
|
||||
backupReg0f = R2f.z;
|
||||
R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.x) + PV0f.y);
|
||||
R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.y) + PV0f.x);
|
||||
R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.w) + PV0f.z);
|
||||
R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),backupReg0f) + PV0f.w);
|
||||
R1f.x = R7f.x;
|
||||
PS1f = R1f.x;
|
||||
// 4
|
||||
R2f.x = R7f.x;
|
||||
R2f.y = R7f.y + intBitsToFloat(0x3cf2b9d6) * scaler;
|
||||
R6f.z = R7f.x;
|
||||
R6f.y = R7f.y + intBitsToFloat(0xbcf2b9d6) * scaler;
|
||||
PS0f = R6f.y;
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, R4f.zy,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.x) + R3f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.w) + R2f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.z) + R2f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.y) + R3f.y);
|
||||
PV0f.w = R123f.w;
|
||||
R3f.y = R7f.y + intBitsToFloat(0x3d088888) * scaler;
|
||||
PS0f = R3f.y;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.w) + PV0f.y);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.x) + PV0f.x);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.z) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.y) + PV0f.w);
|
||||
PV1f.w = R123f.w;
|
||||
R3f.x = R7f.x;
|
||||
PS1f = R3f.x;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.w) + PV1f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.z) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.y) + PV1f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.x) + PV1f.y);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbd088888) * scaler;
|
||||
PS0f = R1f.y;
|
||||
// 3
|
||||
R0f.x = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.y);
|
||||
R0f.y = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.x);
|
||||
R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.z);
|
||||
R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.w);
|
||||
R1f.x = R7f.x;
|
||||
PS1f = R1f.x;
|
||||
// 4
|
||||
R5f.x = R7f.x;
|
||||
R5f.y = R7f.y + intBitsToFloat(0x3d17b426) * scaler;
|
||||
R4f.z = R7f.x;
|
||||
R4f.y = R7f.y + intBitsToFloat(0xbd17b426) * scaler;
|
||||
PS0f = R4f.y;
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, R6f.zy,0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.z) + R0f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.y) + R5f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.x) + R5f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.w) + R0f.y);
|
||||
PV0f.w = R123f.w;
|
||||
R0f.y = R7f.y + intBitsToFloat(0x3d26dfc3) * scaler;
|
||||
PS0f = R0f.y;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.y) + PV0f.y);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.w) + PV0f.w);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.x) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.z) + PV0f.x);
|
||||
PV1f.w = R123f.w;
|
||||
R0f.x = R7f.x;
|
||||
PS1f = R0f.x;
|
||||
// 2
|
||||
backupReg0f = R7f.y;
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.y) + PV1f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.x) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.w) + PV1f.y);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.z) + PV1f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R7f.y = backupReg0f + intBitsToFloat(0xbd26dfc3) * scaler;
|
||||
PS0f = R7f.y;
|
||||
// 3
|
||||
backupReg0f = R2f.x;
|
||||
backupReg1f = R2f.y;
|
||||
backupReg2f = R2f.z;
|
||||
R2f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg0f) + PV0f.y);
|
||||
R2f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg1f) + PV0f.x);
|
||||
R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.w) + PV0f.z);
|
||||
R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg2f) + PV0f.w);
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, R4f.zy,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R7f.xyzw = (textureLod(textureUnitPS0, R7f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.x) + R2f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.w) + R2f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.z) + R2f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.y) + R2f.y);
|
||||
PV0f.w = R123f.w;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.w) + PV0f.y);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.x) + PV0f.x);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.z) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.y) + PV0f.w);
|
||||
PV1f.w = R123f.w;
|
||||
// 2
|
||||
backupReg0f = R7f.x;
|
||||
backupReg1f = R7f.y;
|
||||
backupReg2f = R7f.z;
|
||||
backupReg3f = R7f.w;
|
||||
R7f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg0f) + PV1f.y);
|
||||
R7f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg1f) + PV1f.w);
|
||||
R7f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg2f) + PV1f.z);
|
||||
R7f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg3f) + PV1f.x);
|
||||
// export
|
||||
passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w)* bloom;
|
||||
}
|
@ -0,0 +1,130 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
// shader e334517825fdd599
|
||||
//water, sun, fog.
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
|
||||
const float hazeFactor = 0.1;
|
||||
|
||||
const float gamma = $gamma; // 1.0 is neutral Botw is already colour graded at this stage
|
||||
const float exposure = $exposure; // 1.0 is neutral
|
||||
const float vibrance = $vibrance; // 0.0 is neutral
|
||||
const float crushContrast = $crushContrast; // 0.0 is neutral. Use small increments, loss of shadow detail
|
||||
const float contrastCurve = $contrastCurve;
|
||||
|
||||
|
||||
vec3 RGB_Lift = vec3($redShadows, $greenShadows , $blueSadows); // [0.000 to 2.000] Adjust shadows for Red, Green and Blue.
|
||||
vec3 RGB_Gamma = vec3($redMid ,$greenMid, $blueMid); // [0.000 to 2.000] Adjust midtones for Red, Green and Blue
|
||||
vec3 RGB_Gain = vec3($redHilight, $greenHilight, $blueHilight); // [0.000 to 2.000] Adjust highlights for Red, Green and Blue
|
||||
//lumasharpen
|
||||
const float sharp_mix = $sharp_mix;
|
||||
const float sharp_strength = 2.0;
|
||||
const float sharp_clamp = 0.75;
|
||||
const float offset_bias = 1.0;
|
||||
float Sigmoid (float x) {
|
||||
|
||||
return 1.0 / (1.0 + (exp(-(x - 0.5) * 5.5)));
|
||||
}
|
||||
|
||||
|
||||
#define px (1.0/1920.0*uf_fragCoordScale.x)
|
||||
#define py (1.0/1080.0*uf_fragCoordScale.y)
|
||||
#define CoefLuma vec3(0.2126, 0.7152, 0.0722)
|
||||
|
||||
float lumasharping(sampler2D tex, vec2 pos) {
|
||||
vec4 colorInput = texture(tex, pos);
|
||||
|
||||
vec3 ori = colorInput.rgb;
|
||||
|
||||
// -- Combining the strength and luma multipliers --
|
||||
vec3 sharp_strength_luma = (CoefLuma * sharp_strength);
|
||||
|
||||
// -- Gaussian filter --
|
||||
// [ .25, .50, .25] [ 1 , 2 , 1 ]
|
||||
// [ .50, 1, .50] = [ 2 , 4 , 2 ]
|
||||
// [ .25, .50, .25] [ 1 , 2 , 1 ]
|
||||
|
||||
vec3 blur_ori = texture(tex, pos + vec2(px, -py) * 0.5 * offset_bias).rgb; // South East
|
||||
blur_ori += texture(tex, pos + vec2(-px, -py) * 0.5 * offset_bias).rgb; // South West
|
||||
blur_ori += texture(tex, pos + vec2(px, py) * 0.5 * offset_bias).rgb; // North East
|
||||
blur_ori += texture(tex, pos + vec2(-px, py) * 0.5 * offset_bias).rgb; // North West
|
||||
|
||||
blur_ori *= 0.25; // ( /= 4) Divide by the number of texture fetches
|
||||
|
||||
// -- Calculate the sharpening --
|
||||
vec3 sharp = ori - blur_ori; //Subtracting the blurred image from the original image
|
||||
|
||||
// -- Adjust strength of the sharpening and clamp it--
|
||||
vec4 sharp_strength_luma_clamp = vec4(sharp_strength_luma * (0.5 / sharp_clamp), 0.5); //Roll part of the clamp into the dot
|
||||
|
||||
float sharp_luma = clamp((dot(vec4(sharp, 1.0), sharp_strength_luma_clamp)), 0.0, 1.0); //Calculate the luma, adjust the strength, scale up and clamp
|
||||
sharp_luma = (sharp_clamp * 2.0) * sharp_luma - sharp_clamp; //scale down
|
||||
|
||||
return sharp_luma;
|
||||
}
|
||||
|
||||
vec3 LiftGammaGainPass(vec3 colorInput)
|
||||
{ //reshade BSD https://reshade.me , Alexkiri port
|
||||
vec3 color = colorInput;
|
||||
color = color * (1.5 - 0.5 * RGB_Lift) + 0.5 * RGB_Lift - 0.5;
|
||||
color = clamp(color, 0.0, 1.0);
|
||||
color *= RGB_Gain;
|
||||
color = pow(color, 1.0 / RGB_Gamma);
|
||||
return clamp(color, 0.0, 1.0);
|
||||
}
|
||||
|
||||
vec3 contrasty(vec3 colour){
|
||||
vec3 fColour = (colour.xyz);
|
||||
//fColour = LiftGammaGainPass(fColour);
|
||||
|
||||
fColour = clamp(exposure * fColour, 0.0, 1.0);
|
||||
fColour = pow(fColour, vec3(1.0 / gamma));
|
||||
float luminance = fColour.r*0.299 + fColour.g*0.587 + fColour.b*0.114;
|
||||
float mn = min(min(fColour.r, fColour.g), fColour.b);
|
||||
float mx = max(max(fColour.r, fColour.g), fColour.b);
|
||||
float sat = (1.0 - (mx - mn)) * (1.0 - mx) * luminance * 5.0;
|
||||
vec3 lightness = vec3((mn + mx) / 2.0);
|
||||
fColour = LiftGammaGainPass(fColour);
|
||||
// vibrance
|
||||
fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat);
|
||||
fColour = max(vec3(0.0), fColour - vec3(crushContrast));
|
||||
return fColour;
|
||||
}
|
||||
|
||||
|
||||
|
||||
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4001000 res 1920x1080x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 0
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||
float PS0f = 0.0, PS1f = 0.0;
|
||||
vec4 tempf = vec4(0.0);
|
||||
float tempResultf;
|
||||
int tempResulti;
|
||||
ivec4 ARi = ivec4(0);
|
||||
bool predResult = true;
|
||||
vec3 cubeMapSTM;
|
||||
int cubeMapFaceId;
|
||||
R0f = passParameterSem0;
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
// export
|
||||
R0f.xyz = contrasty(R0f.xyz);
|
||||
//R0f.xyz = mix(R0f.xyz, smoothstep(0.0, 1.0, R0f.xyz), 0.25); //contrast difference between heat haze and sky
|
||||
|
||||
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
}
|
68
src/TwilightPrincessHD/Enhancements/NegativeLOD/rules.txt
Normal file
68
src/TwilightPrincessHD/Enhancements/NegativeLOD/rules.txt
Normal file
@ -0,0 +1,68 @@
|
||||
[Definition]
|
||||
titleIds = 000500001019C800,000500001019E600,000500001019E500
|
||||
name = Level of detail
|
||||
path = "The Legend of Zelda: Twilight Princess HD/Enhancements/Negative Texture LOD"
|
||||
description = Sharper textures at risk of shimmering when set too high.|Made by getdls.
|
||||
#Credits: getdls
|
||||
version = 6
|
||||
|
||||
[Default]
|
||||
$0x031 = 0
|
||||
$0x033 = 0
|
||||
$0x034 = 0
|
||||
$0x035 = 0
|
||||
$0x01a = 0
|
||||
|
||||
[Preset]
|
||||
name = LOD +2 (Simulate WiiU LOD on higher resolution)
|
||||
$0x031 = +2
|
||||
$0x033 = +2
|
||||
$0x034 = +2
|
||||
$0x035 = +2
|
||||
$0x01a = 0
|
||||
|
||||
[Preset]
|
||||
name = LOD Default
|
||||
|
||||
[Preset]
|
||||
name = LOD -0.5 (Sharper)
|
||||
$0x031 = -.5
|
||||
$0x033 = -.5
|
||||
$0x034 = -.5
|
||||
$0x035 = -.5
|
||||
$0x01a = -.5
|
||||
[Preset]
|
||||
name = LOD -1 (Super Sharp)
|
||||
$0x031 = -1
|
||||
$0x033 = -1
|
||||
$0x034 = -1
|
||||
$0x035 = -1
|
||||
$0x01a = -1
|
||||
|
||||
[Preset]
|
||||
name = LOD -4 (Overkill - For screenshots)
|
||||
$0x031 = -4
|
||||
$0x033 = -4
|
||||
$0x034 = -4
|
||||
$0x035 = -4
|
||||
$0x01a = -4
|
||||
|
||||
[TextureRedefine]
|
||||
formats = 0x031 #0x431,0x432,0x433,0x434,0x435 not used.
|
||||
overwriteRelativeLodBias = $0x031
|
||||
|
||||
[TextureRedefine]#Per format, possible to have separate scaling if needed
|
||||
formats = 0x033
|
||||
overwriteRelativeLodBias = $0x033
|
||||
|
||||
[TextureRedefine]
|
||||
formats = 0x034
|
||||
overwriteRelativeLodBias = $0x034
|
||||
|
||||
[TextureRedefine]
|
||||
formats = 0x035
|
||||
overwriteRelativeLodBias = $0x035
|
||||
|
||||
[TextureRedefine]
|
||||
formats = 0x01a
|
||||
overwriteRelativeLodBias = $0x01a
|
@ -0,0 +1,150 @@
|
||||
#version 450
|
||||
#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 15e4acf324eb0912 missing
|
||||
//map mission objectives missing
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 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)));
|
||||
// skipped unused attribute for r5
|
||||
attrDecoder.xy = attrDataSem2.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
|
||||
R127f.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R1f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.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;
|
||||
R127f.z = tempf.x;
|
||||
R0f.x = 0.0;
|
||||
PS0f = R0f.x;
|
||||
// 3
|
||||
R1f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R1f.x;
|
||||
PV1f.y = R1f.x;
|
||||
PV1f.z = R1f.x;
|
||||
PV1f.w = R1f.x;
|
||||
R3f.x = R2f.x;
|
||||
PS1f = R3f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R1f.y = tempf.x;
|
||||
R3f.y = R2f.y;
|
||||
PS0f = R3f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R1f.z = tempf.x;
|
||||
R3f.z = R127f.w;
|
||||
PS1f = R3f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R1f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R1f.x*UIx, R1f.y*UIy, R1f.z, R1f.w));
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
// export
|
||||
passParameterSem1 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||
// export
|
||||
passParameterSem2 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||
}
|
@ -0,0 +1,149 @@
|
||||
#version 450
|
||||
#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 18893ce415f2fcc7
|
||||
//Map icon position
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 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)));
|
||||
// skipped unused attribute for r8
|
||||
attrDecoder.xy = attrDataSem2.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
|
||||
R127f.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R1f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.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;
|
||||
R127f.z = tempf.x;
|
||||
R0f.x = 0.0;
|
||||
PS0f = R0f.x;
|
||||
// 3
|
||||
R1f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R1f.x;
|
||||
PV1f.y = R1f.x;
|
||||
PV1f.z = R1f.x;
|
||||
PV1f.w = R1f.x;
|
||||
R3f.x = R2f.x;
|
||||
PS1f = R3f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R1f.y = tempf.x;
|
||||
R3f.y = R2f.y;
|
||||
PS0f = R3f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R1f.z = tempf.x;
|
||||
R3f.z = R127f.w;
|
||||
PS1f = R3f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R1f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R1f.x*UIx, R1f.y*UIy, R1f.z, R1f.w));
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
// export
|
||||
passParameterSem1 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||
// export
|
||||
passParameterSem2 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||
}
|
@ -0,0 +1,159 @@
|
||||
#version 450
|
||||
#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 1caed2ca3d14f36b
|
||||
//object box bg 2
|
||||
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[10];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[10];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem2;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 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 = attrDataSem2.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
|
||||
R127f.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R127f.w = R1f.w;
|
||||
PS0f = R127f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R2f.z = 1.0;
|
||||
PS1f = R2f.z;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.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;
|
||||
R127f.z = tempf.x;
|
||||
PS0f = 1.0;
|
||||
// 3
|
||||
R1f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,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 = R1f.x;
|
||||
PV1f.y = R1f.x;
|
||||
PV1f.z = R1f.x;
|
||||
PV1f.w = R1f.x;
|
||||
R3f.z = PS0f;
|
||||
PS1f = R3f.z;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.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;
|
||||
R1f.y = tempf.x;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R1f.z = tempf.x;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R1f.w = tempf.x;
|
||||
// 7
|
||||
R0f.xyz = vec3(intBitsToFloat(uf_remappedVS[7].x),intBitsToFloat(uf_remappedVS[7].y),intBitsToFloat(uf_remappedVS[7].z));
|
||||
R0f.w = intBitsToFloat(uf_remappedVS[7].w);
|
||||
// export
|
||||
SET_POSITION(vec4(R1f.x*UIx, R1f.y*UIy, R1f.z, R1f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// 0
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.z),vec4(intBitsToFloat(uf_remappedVS[8].x),intBitsToFloat(uf_remappedVS[8].y),intBitsToFloat(uf_remappedVS[8].z),intBitsToFloat(uf_remappedVS[8].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.z),vec4(intBitsToFloat(uf_remappedVS[9].x),intBitsToFloat(uf_remappedVS[9].y),intBitsToFloat(uf_remappedVS[9].z),intBitsToFloat(uf_remappedVS[9].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R3f.x = PV0f.x;
|
||||
PS1f = R3f.x;
|
||||
// 2
|
||||
R3f.y = PV1f.x;
|
||||
// export
|
||||
passParameterSem1 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||
}
|
@ -0,0 +1,148 @@
|
||||
#version 450
|
||||
#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 24b09ef9b11b98d5
|
||||
//UI text front
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
const float UItransp = $UItransp;
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 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;
|
||||
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
||||
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
|
||||
attrDecoder.xy = attrDataSem2.xy;
|
||||
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
||||
attrDecoder.z = 0;
|
||||
attrDecoder.w = 0;
|
||||
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
// 0
|
||||
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R2f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.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;
|
||||
R127f.z = tempf.x;
|
||||
R2f.x = R3f.x;
|
||||
PS0f = R2f.x;
|
||||
// 3
|
||||
R3f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R3f.x;
|
||||
PV1f.y = R3f.x;
|
||||
PV1f.z = R3f.x;
|
||||
PV1f.w = R3f.x;
|
||||
R2f.y = R3f.y;
|
||||
PS1f = R2f.y;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R3f.y = tempf.x;
|
||||
R2f.z = R127f.w;
|
||||
PS0f = R2f.z;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R3f.z = tempf.x;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R3f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R3f.x*UIx, R3f.y*UIy, R3f.z, R3f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w*UItransp);
|
||||
// export
|
||||
passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
|
||||
}
|
@ -0,0 +1,197 @@
|
||||
#version 450
|
||||
#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 27b429c755f71162
|
||||
//Map arrows
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[11];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[11];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
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 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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 R4f = vec4(0.0);
|
||||
vec4 R5f = 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;
|
||||
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
||||
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
|
||||
attrDecoder.xy = attrDataSem2.xy;
|
||||
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
||||
attrDecoder.z = 0;
|
||||
attrDecoder.w = 0;
|
||||
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
// 0
|
||||
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R127f.w = R2f.w;
|
||||
PS0f = R127f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R0f.z = 1.0;
|
||||
PS1f = R0f.z;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.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;
|
||||
R126f.z = tempf.x;
|
||||
R127f.z = 1.0;
|
||||
PS0f = R127f.z;
|
||||
// 3
|
||||
R2f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,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 = R2f.x;
|
||||
PV1f.y = R2f.x;
|
||||
PV1f.z = R2f.x;
|
||||
PV1f.w = R2f.x;
|
||||
R126f.w = 1.0;
|
||||
PS1f = R126f.w;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R126f.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;
|
||||
R2f.y = tempf.x;
|
||||
R0f.y = 0.0;
|
||||
PS0f = R0f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R126f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R2f.z = tempf.x;
|
||||
R4f.z = R127f.z;
|
||||
PS1f = R4f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R126f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R2f.w = tempf.x;
|
||||
R5f.z = R126f.w;
|
||||
PS0f = R5f.z;
|
||||
// export
|
||||
SET_POSITION(vec4(R2f.x*UIx, R2f.y*UIy, R2f.z, R2f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
// 0
|
||||
backupReg0f = R0f.z;
|
||||
backupReg0f = R0f.z;
|
||||
tempf.x = dot(vec4(R3f.x,R3f.y,backupReg0f,backupReg0f),vec4(intBitsToFloat(uf_remappedVS[7].x),intBitsToFloat(uf_remappedVS[7].y),intBitsToFloat(uf_remappedVS[7].z),intBitsToFloat(uf_remappedVS[7].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
// 1
|
||||
backupReg0f = R0f.z;
|
||||
backupReg0f = R0f.z;
|
||||
tempf.x = dot(vec4(R3f.x,R3f.y,backupReg0f,backupReg0f),vec4(intBitsToFloat(uf_remappedVS[8].x),intBitsToFloat(uf_remappedVS[8].y),intBitsToFloat(uf_remappedVS[8].z),intBitsToFloat(uf_remappedVS[8].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R4f.x = PV0f.x;
|
||||
PS1f = R4f.x;
|
||||
// 2
|
||||
backupReg0f = R0f.z;
|
||||
backupReg0f = R0f.z;
|
||||
tempf.x = dot(vec4(R3f.x,R3f.y,backupReg0f,backupReg0f),vec4(intBitsToFloat(uf_remappedVS[9].x),intBitsToFloat(uf_remappedVS[9].y),intBitsToFloat(uf_remappedVS[9].z),intBitsToFloat(uf_remappedVS[9].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R4f.y = PV1f.x;
|
||||
PS0f = R4f.y;
|
||||
// 3
|
||||
backupReg0f = R0f.z;
|
||||
backupReg0f = R0f.z;
|
||||
tempf.x = dot(vec4(R3f.x,R3f.y,backupReg0f,backupReg0f),vec4(intBitsToFloat(uf_remappedVS[10].x),intBitsToFloat(uf_remappedVS[10].y),intBitsToFloat(uf_remappedVS[10].z),intBitsToFloat(uf_remappedVS[10].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R5f.x = PV0f.x;
|
||||
PS1f = R5f.x;
|
||||
// 4
|
||||
R5f.y = PV1f.x;
|
||||
// export
|
||||
passParameterSem2 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||
// export
|
||||
passParameterSem3 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||
}
|
@ -0,0 +1,165 @@
|
||||
#version 450
|
||||
#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 4f5f72f9eec53a90
|
||||
//BG box 3
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[9];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[9];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
layout(location = 0) out vec4 passParameterSem0;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 R4f = 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;
|
||||
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
||||
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
|
||||
attrDecoder.xy = attrDataSem2.xy;
|
||||
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
||||
attrDecoder.z = 0;
|
||||
attrDecoder.w = 0;
|
||||
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
// 0
|
||||
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R2f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R3f.z = 1.0;
|
||||
PS1f = R3f.z;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.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;
|
||||
R127f.z = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS0f = R127f.w;
|
||||
// 3
|
||||
R2f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R2f.x;
|
||||
PV1f.y = R2f.x;
|
||||
PV1f.z = R2f.x;
|
||||
PV1f.w = R2f.x;
|
||||
R0f.z = 0.0;
|
||||
PS1f = R0f.z;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R2f.y = tempf.x;
|
||||
R4f.z = R127f.w;
|
||||
PS0f = R4f.z;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R2f.z = tempf.x;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R2f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R2f.x*UIx, R2f.y*UIy, R2f.z, R2f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
// 0
|
||||
tempf.x = dot(vec4(R3f.x,R3f.y,R3f.z,R3f.z),vec4(intBitsToFloat(uf_remappedVS[7].x),intBitsToFloat(uf_remappedVS[7].y),intBitsToFloat(uf_remappedVS[7].z),intBitsToFloat(uf_remappedVS[7].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R3f.x,R3f.y,R3f.z,R3f.z),vec4(intBitsToFloat(uf_remappedVS[8].x),intBitsToFloat(uf_remappedVS[8].y),intBitsToFloat(uf_remappedVS[8].z),intBitsToFloat(uf_remappedVS[8].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R4f.x = PV0f.x;
|
||||
PS1f = R4f.x;
|
||||
// 2
|
||||
R4f.y = PV1f.x;
|
||||
// export
|
||||
passParameterSem2 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||
}
|
@ -0,0 +1,146 @@
|
||||
#version 450
|
||||
#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 5f2ae4dbd2256d0c
|
||||
//minimap
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
layout(location = 0) 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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 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)));
|
||||
// skipped unused attribute for r8
|
||||
attrDecoder.xy = attrDataSem2.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
|
||||
R127f.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R1f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.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;
|
||||
R127f.z = tempf.x;
|
||||
R3f.x = 0.0;
|
||||
PS0f = R3f.x;
|
||||
// 3
|
||||
R1f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R1f.x;
|
||||
PV1f.y = R1f.x;
|
||||
PV1f.z = R1f.x;
|
||||
PV1f.w = R1f.x;
|
||||
R0f.x = R2f.x;
|
||||
PS1f = R0f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R1f.y = tempf.x;
|
||||
R0f.y = R2f.y;
|
||||
PS0f = R0f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R1f.z = tempf.x;
|
||||
R0f.z = R127f.w;
|
||||
PS1f = R0f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R1f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R1f.x*UIx, R1f.y*UIy, R1f.z, R1f.w));
|
||||
// export
|
||||
passParameterSem1 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
}
|
@ -0,0 +1,153 @@
|
||||
#version 450
|
||||
#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 6dc0977212eae7b3
|
||||
//hearts
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
const float UItransp = $UItransp;
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
layout(location = 0) out vec4 passParameterSem0;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 R4f = 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;
|
||||
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
||||
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
|
||||
attrDecoder.xy = attrDataSem2.xy;
|
||||
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
||||
attrDecoder.z = 0;
|
||||
attrDecoder.w = 0;
|
||||
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
// 0
|
||||
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R2f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.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;
|
||||
R127f.z = tempf.x;
|
||||
R4f.x = 0.0;
|
||||
PS0f = R4f.x;
|
||||
// 3
|
||||
R2f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R2f.x;
|
||||
PV1f.y = R2f.x;
|
||||
PV1f.z = R2f.x;
|
||||
PV1f.w = R2f.x;
|
||||
R0f.x = R3f.x;
|
||||
PS1f = R0f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R2f.y = tempf.x;
|
||||
R0f.y = R3f.y;
|
||||
PS0f = R0f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R2f.z = tempf.x;
|
||||
R0f.z = R127f.w;
|
||||
PS1f = R0f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R2f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R2f.x*UIx, R2f.y*UIy, R2f.z, R2f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w*UItransp);
|
||||
// export
|
||||
passParameterSem2 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
}
|
@ -0,0 +1,165 @@
|
||||
#version 450
|
||||
#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 70e776430cd020a9
|
||||
//box bg 5
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[10];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[10];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem2;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
layout(location = 0) out vec4 passParameterSem0;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 R4f = 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 = attrDataSem2.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
|
||||
R127f.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R1f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R3f.z = 1.0;
|
||||
PS1f = R3f.z;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.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;
|
||||
R127f.z = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS0f = R127f.w;
|
||||
// 3
|
||||
R1f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R1f.x;
|
||||
PV1f.y = R1f.x;
|
||||
PV1f.z = R1f.x;
|
||||
PV1f.w = R1f.x;
|
||||
R2f.z = 0.0;
|
||||
PS1f = R2f.z;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R1f.y = tempf.x;
|
||||
R4f.z = R127f.w;
|
||||
PS0f = R4f.z;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R1f.z = tempf.x;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R1f.w = tempf.x;
|
||||
// 7
|
||||
R0f.xyz = vec3(intBitsToFloat(uf_remappedVS[7].x),intBitsToFloat(uf_remappedVS[7].y),intBitsToFloat(uf_remappedVS[7].z));
|
||||
R0f.w = intBitsToFloat(uf_remappedVS[7].w);
|
||||
// export
|
||||
SET_POSITION(vec4(R1f.x*UIx, R1f.y*UIy, R1f.z, R1f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
// 0
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R3f.z,R3f.z),vec4(intBitsToFloat(uf_remappedVS[8].x),intBitsToFloat(uf_remappedVS[8].y),intBitsToFloat(uf_remappedVS[8].z),intBitsToFloat(uf_remappedVS[8].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R3f.z,R3f.z),vec4(intBitsToFloat(uf_remappedVS[9].x),intBitsToFloat(uf_remappedVS[9].y),intBitsToFloat(uf_remappedVS[9].z),intBitsToFloat(uf_remappedVS[9].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R4f.x = PV0f.x;
|
||||
PS1f = R4f.x;
|
||||
// 2
|
||||
R4f.y = PV1f.x;
|
||||
// export
|
||||
passParameterSem2 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||
}
|
@ -0,0 +1,165 @@
|
||||
#version 450
|
||||
#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 7674f1be5f1b1e0c
|
||||
//object box BG
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[9];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[9];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
layout(location = 0) out vec4 passParameterSem0;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 R4f = 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;
|
||||
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
||||
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
|
||||
attrDecoder.xy = attrDataSem2.xy;
|
||||
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
||||
attrDecoder.z = 0;
|
||||
attrDecoder.w = 0;
|
||||
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
// 0
|
||||
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R2f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R3f.z = 1.0;
|
||||
PS1f = R3f.z;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.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;
|
||||
R127f.z = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS0f = R127f.w;
|
||||
// 3
|
||||
R2f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R2f.x;
|
||||
PV1f.y = R2f.x;
|
||||
PV1f.z = R2f.x;
|
||||
PV1f.w = R2f.x;
|
||||
R0f.z = 0.0;
|
||||
PS1f = R0f.z;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R2f.y = tempf.x;
|
||||
R4f.z = R127f.w;
|
||||
PS0f = R4f.z;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R2f.z = tempf.x;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R2f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R2f.x*UIx, R2f.y*UIy, R2f.z, R2f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
// 0
|
||||
tempf.x = dot(vec4(R3f.x,R3f.y,R3f.z,R3f.z),vec4(intBitsToFloat(uf_remappedVS[7].x),intBitsToFloat(uf_remappedVS[7].y),intBitsToFloat(uf_remappedVS[7].z),intBitsToFloat(uf_remappedVS[7].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R3f.x,R3f.y,R3f.z,R3f.z),vec4(intBitsToFloat(uf_remappedVS[8].x),intBitsToFloat(uf_remappedVS[8].y),intBitsToFloat(uf_remappedVS[8].z),intBitsToFloat(uf_remappedVS[8].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R4f.x = PV0f.x;
|
||||
PS1f = R4f.x;
|
||||
// 2
|
||||
R4f.y = PV1f.x;
|
||||
// export
|
||||
passParameterSem2 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||
}
|
@ -0,0 +1,152 @@
|
||||
#version 450
|
||||
#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 7c5a0f2532be049f
|
||||
//Map highlight
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
layout(location = 0) out vec4 passParameterSem0;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 R4f = 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;
|
||||
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
||||
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
|
||||
attrDecoder.xy = attrDataSem2.xy;
|
||||
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
||||
attrDecoder.z = 0;
|
||||
attrDecoder.w = 0;
|
||||
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
// 0
|
||||
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R2f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.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;
|
||||
R127f.z = tempf.x;
|
||||
R4f.x = 0.0;
|
||||
PS0f = R4f.x;
|
||||
// 3
|
||||
R2f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R2f.x;
|
||||
PV1f.y = R2f.x;
|
||||
PV1f.z = R2f.x;
|
||||
PV1f.w = R2f.x;
|
||||
R0f.x = R3f.x;
|
||||
PS1f = R0f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R2f.y = tempf.x;
|
||||
R0f.y = R3f.y;
|
||||
PS0f = R0f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R2f.z = tempf.x;
|
||||
R0f.z = R127f.w;
|
||||
PS1f = R0f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R2f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R2f.x*UIx, R2f.y*UIy, R2f.z, R2f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||
// export
|
||||
passParameterSem2 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
}
|
@ -0,0 +1,158 @@
|
||||
#version 450
|
||||
#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 7fc573264230ed00
|
||||
//lights bloom sensor
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[10];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[10];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem2;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 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 = attrDataSem2.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
|
||||
R127f.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R127f.w = R1f.w;
|
||||
PS0f = R127f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R2f.z = 1.0;
|
||||
PS1f = R2f.z;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.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;
|
||||
R127f.z = tempf.x;
|
||||
PS0f = 1.0;
|
||||
// 3
|
||||
R1f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,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 = R1f.x;
|
||||
PV1f.y = R1f.x;
|
||||
PV1f.z = R1f.x;
|
||||
PV1f.w = R1f.x;
|
||||
R3f.z = PS0f;
|
||||
PS1f = R3f.z;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.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;
|
||||
R1f.y = tempf.x;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R1f.z = tempf.x;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R1f.w = tempf.x;
|
||||
// 7
|
||||
R0f.xyz = vec3(intBitsToFloat(uf_remappedVS[7].x),intBitsToFloat(uf_remappedVS[7].y),intBitsToFloat(uf_remappedVS[7].z));
|
||||
R0f.w = intBitsToFloat(uf_remappedVS[7].w);
|
||||
// export
|
||||
SET_POSITION(vec4(R1f.x*UIx, R1f.y*UIy, R1f.z, R1f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// 0
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.z),vec4(intBitsToFloat(uf_remappedVS[8].x),intBitsToFloat(uf_remappedVS[8].y),intBitsToFloat(uf_remappedVS[8].z),intBitsToFloat(uf_remappedVS[8].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.z),vec4(intBitsToFloat(uf_remappedVS[9].x),intBitsToFloat(uf_remappedVS[9].y),intBitsToFloat(uf_remappedVS[9].z),intBitsToFloat(uf_remappedVS[9].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R3f.x = PV0f.x;
|
||||
PS1f = R3f.x;
|
||||
// 2
|
||||
R3f.y = PV1f.x;
|
||||
// export
|
||||
passParameterSem1 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||
}
|
@ -0,0 +1,164 @@
|
||||
#version 450
|
||||
#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 827afe113fd67658
|
||||
//lamp oil indicator
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[9];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[9];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
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 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;
|
||||
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
||||
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
|
||||
attrDecoder.xy = attrDataSem2.xy;
|
||||
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
||||
attrDecoder.z = 0;
|
||||
attrDecoder.w = 0;
|
||||
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
// 0
|
||||
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R127f.w = R2f.w;
|
||||
PS0f = R127f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R0f.z = 1.0;
|
||||
PS1f = R0f.z;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.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;
|
||||
R127f.z = tempf.x;
|
||||
PS0f = 1.0;
|
||||
// 3
|
||||
R2f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,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 = R2f.x;
|
||||
PV1f.y = R2f.x;
|
||||
PV1f.z = R2f.x;
|
||||
PV1f.w = R2f.x;
|
||||
R4f.z = PS0f;
|
||||
PS1f = R4f.z;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.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;
|
||||
R2f.y = tempf.x;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R2f.z = tempf.x;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R2f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R2f.x*UIx, R2f.y*UIy, R2f.z, R2f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||
// 0
|
||||
backupReg0f = R0f.z;
|
||||
backupReg0f = R0f.z;
|
||||
tempf.x = dot(vec4(R3f.x,R3f.y,backupReg0f,backupReg0f),vec4(intBitsToFloat(uf_remappedVS[7].x),intBitsToFloat(uf_remappedVS[7].y),intBitsToFloat(uf_remappedVS[7].z),intBitsToFloat(uf_remappedVS[7].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
// 1
|
||||
backupReg0f = R0f.z;
|
||||
backupReg0f = R0f.z;
|
||||
tempf.x = dot(vec4(R3f.x,R3f.y,backupReg0f,backupReg0f),vec4(intBitsToFloat(uf_remappedVS[8].x),intBitsToFloat(uf_remappedVS[8].y),intBitsToFloat(uf_remappedVS[8].z),intBitsToFloat(uf_remappedVS[8].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R4f.x = PV0f.x;
|
||||
PS1f = R4f.x;
|
||||
// 2
|
||||
R4f.y = PV1f.x;
|
||||
// export
|
||||
passParameterSem1 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||
}
|
@ -0,0 +1,147 @@
|
||||
#version 450
|
||||
#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 85b15b7fe92662bb
|
||||
//map dungeon BG
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
layout(location = 0) 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)));
|
||||
// skipped unused attribute for r5
|
||||
attrDecoder.xy = attrDataSem2.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
|
||||
R127f.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R1f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.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;
|
||||
R127f.z = tempf.x;
|
||||
R3f.x = 0.0;
|
||||
PS0f = R3f.x;
|
||||
// 3
|
||||
R1f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R1f.x;
|
||||
PV1f.y = R1f.x;
|
||||
PV1f.z = R1f.x;
|
||||
PV1f.w = R1f.x;
|
||||
R0f.x = R2f.x;
|
||||
PS1f = R0f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R1f.y = tempf.x;
|
||||
R0f.y = R2f.y;
|
||||
PS0f = R0f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R1f.z = tempf.x;
|
||||
R0f.z = R127f.w;
|
||||
PS1f = R0f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R1f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R1f.x*UIx, R1f.y*UIy, R1f.z, R1f.w));
|
||||
// export
|
||||
passParameterSem1 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
}
|
@ -0,0 +1,364 @@
|
||||
#version 450
|
||||
#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 95a5a89d62998e0d
|
||||
// blur
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) 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;
|
||||
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 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);
|
||||
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;
|
||||
float scaler;
|
||||
int tempResulti;
|
||||
ivec4 ARi = ivec4(0);
|
||||
bool predResult = true;
|
||||
vec3 cubeMapSTM;
|
||||
int cubeMapFaceId;
|
||||
R0f = GET_FRAGCOORD();
|
||||
scaler = uf_fragCoordScale.x;
|
||||
// 0
|
||||
R7f.x = R0f.x * intBitsToFloat(0x3b088889);
|
||||
PV0f.x = R7f.x;
|
||||
R7f.y = R0f.y * intBitsToFloat(0x3b72b9d6);
|
||||
PV0f.y = R7f.y;
|
||||
// 1
|
||||
R0f.x = PV0f.x;
|
||||
R0f.y = PV0f.y + intBitsToFloat(0x3b72b9d6) * scaler;
|
||||
R1f.z = PV0f.x;
|
||||
R1f.y = PV0f.y + intBitsToFloat(0xbb72b9d6) * scaler;
|
||||
PS1f = R1f.y;
|
||||
// 2
|
||||
R2f.x = R7f.x;
|
||||
R2f.y = R7f.y + intBitsToFloat(0x3bf2b9d6) * scaler;
|
||||
R4f.z = R7f.x;
|
||||
R4f.y = R7f.y + intBitsToFloat(0xbbf2b9d6) * scaler;
|
||||
PS0f = R4f.y;
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, R7f.xy,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.zy,0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw);
|
||||
// 0
|
||||
backupReg0f = R0f.x;
|
||||
backupReg1f = R0f.w;
|
||||
PV0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.y);
|
||||
PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.z);
|
||||
PV0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg0f);
|
||||
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg1f);
|
||||
R0f.y = R7f.y + intBitsToFloat(0x3c360b60) * scaler;
|
||||
PS0f = R0f.y;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(R3f.y,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.x);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(R3f.w,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.w);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(R3f.x,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(R3f.z,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.y);
|
||||
PV1f.w = R123f.w;
|
||||
R0f.x = R7f.x;
|
||||
PS1f = R0f.x;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.y) + PV1f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.x) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.w) + PV1f.y);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.z) + PV1f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbc360b60) * scaler;
|
||||
PS0f = R1f.y;
|
||||
// 3
|
||||
backupReg0f = R2f.z;
|
||||
R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.x) + PV0f.y);
|
||||
R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.y) + PV0f.x);
|
||||
R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.w) + PV0f.z);
|
||||
R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),backupReg0f) + PV0f.w);
|
||||
R1f.x = R7f.x;
|
||||
PS1f = R1f.x;
|
||||
// 4
|
||||
R2f.x = R7f.x;
|
||||
R2f.y = R7f.y + intBitsToFloat(0x3c72b9d6) * scaler;
|
||||
R6f.z = R7f.x;
|
||||
R6f.y = R7f.y + intBitsToFloat(0xbc72b9d6) * scaler;
|
||||
PS0f = R6f.y;
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, R4f.zy,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.x) + R3f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.w) + R2f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.z) + R2f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.y) + R3f.y);
|
||||
PV0f.w = R123f.w;
|
||||
R3f.y = R7f.y + intBitsToFloat(0x3c97b426) * scaler;
|
||||
PS0f = R3f.y;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.w) + PV0f.y);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.x) + PV0f.x);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.z) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.y) + PV0f.w);
|
||||
PV1f.w = R123f.w;
|
||||
R3f.x = R7f.x;
|
||||
PS1f = R3f.x;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.w) + PV1f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.z) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.y) + PV1f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.x) + PV1f.y);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbc97b426) * scaler;
|
||||
PS0f = R1f.y;
|
||||
// 3
|
||||
R0f.x = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.y);
|
||||
R0f.y = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.x);
|
||||
R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.z);
|
||||
R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.w);
|
||||
R1f.x = R7f.x;
|
||||
PS1f = R1f.x;
|
||||
// 4
|
||||
R5f.x = R7f.x;
|
||||
R5f.y = R7f.y + intBitsToFloat(0x3cb60b60) * scaler;
|
||||
R4f.z = R7f.x;
|
||||
R4f.y = R7f.y + intBitsToFloat(0xbcb60b60) * scaler;
|
||||
PS0f = R4f.y;
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, R6f.zy,0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.z) + R0f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.y) + R5f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.x) + R5f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.w) + R0f.y);
|
||||
PV0f.w = R123f.w;
|
||||
R0f.y = R7f.y + intBitsToFloat(0x3cd4629b) * scaler;
|
||||
PS0f = R0f.y;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.y) + PV0f.y);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.w) + PV0f.w);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.x) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.z) + PV0f.x);
|
||||
PV1f.w = R123f.w;
|
||||
R0f.x = R7f.x;
|
||||
PS1f = R0f.x;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.y) + PV1f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.x) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.w) + PV1f.y);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.z) + PV1f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbcd4629b) * scaler;
|
||||
PS0f = R1f.y;
|
||||
// 3
|
||||
backupReg0f = R2f.z;
|
||||
R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.x) + PV0f.y);
|
||||
R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.y) + PV0f.x);
|
||||
R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.w) + PV0f.z);
|
||||
R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),backupReg0f) + PV0f.w);
|
||||
R1f.x = R7f.x;
|
||||
PS1f = R1f.x;
|
||||
// 4
|
||||
R2f.x = R7f.x;
|
||||
R2f.y = R7f.y + intBitsToFloat(0x3cf2b9d6) * scaler;
|
||||
R6f.z = R7f.x;
|
||||
R6f.y = R7f.y + intBitsToFloat(0xbcf2b9d6) * scaler;
|
||||
PS0f = R6f.y;
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, R4f.zy,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.x) + R3f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.w) + R2f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.z) + R2f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.y) + R3f.y);
|
||||
PV0f.w = R123f.w;
|
||||
R3f.y = R7f.y + intBitsToFloat(0x3d088888) * scaler;
|
||||
PS0f = R3f.y;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.w) + PV0f.y);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.x) + PV0f.x);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.z) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.y) + PV0f.w);
|
||||
PV1f.w = R123f.w;
|
||||
R3f.x = R7f.x;
|
||||
PS1f = R3f.x;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.w) + PV1f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.z) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.y) + PV1f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.x) + PV1f.y);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.y = R7f.y + intBitsToFloat(0xbd088888) * scaler;
|
||||
PS0f = R1f.y;
|
||||
// 3
|
||||
R0f.x = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.y);
|
||||
R0f.y = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.x);
|
||||
R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.z);
|
||||
R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.w);
|
||||
R1f.x = R7f.x;
|
||||
PS1f = R1f.x;
|
||||
// 4
|
||||
R5f.x = R7f.x;
|
||||
R5f.y = R7f.y + intBitsToFloat(0x3d17b426) * scaler;
|
||||
R4f.z = R7f.x;
|
||||
R4f.y = R7f.y + intBitsToFloat(0xbd17b426) * scaler;
|
||||
PS0f = R4f.y;
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, R6f.zy,0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.z) + R0f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.y) + R5f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.x) + R5f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.w) + R0f.y);
|
||||
PV0f.w = R123f.w;
|
||||
R0f.y = R7f.y + intBitsToFloat(0x3d26dfc3) * scaler;
|
||||
PS0f = R0f.y;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.y) + PV0f.y);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.w) + PV0f.w);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.x) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.z) + PV0f.x);
|
||||
PV1f.w = R123f.w;
|
||||
R0f.x = R7f.x;
|
||||
PS1f = R0f.x;
|
||||
// 2
|
||||
backupReg0f = R7f.y;
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.y) + PV1f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.x) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.w) + PV1f.y);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.z) + PV1f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R7f.y = backupReg0f + intBitsToFloat(0xbd26dfc3) * scaler;
|
||||
PS0f = R7f.y;
|
||||
// 3
|
||||
backupReg0f = R2f.x;
|
||||
backupReg1f = R2f.y;
|
||||
backupReg2f = R2f.z;
|
||||
R2f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg0f) + PV0f.y);
|
||||
R2f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg1f) + PV0f.x);
|
||||
R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.w) + PV0f.z);
|
||||
R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg2f) + PV0f.w);
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, R4f.zy,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R7f.xyzw = (textureLod(textureUnitPS0, R7f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.x) + R2f.x);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.w) + R2f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.z) + R2f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.y) + R2f.y);
|
||||
PV0f.w = R123f.w;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.w) + PV0f.y);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.x) + PV0f.x);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.z) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.y) + PV0f.w);
|
||||
PV1f.w = R123f.w;
|
||||
// 2
|
||||
backupReg0f = R7f.x;
|
||||
backupReg1f = R7f.y;
|
||||
backupReg2f = R7f.z;
|
||||
backupReg3f = R7f.w;
|
||||
R7f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg0f) + PV1f.y);
|
||||
R7f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg1f) + PV1f.w);
|
||||
R7f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg2f) + PV1f.z);
|
||||
R7f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg3f) + PV1f.x);
|
||||
// export
|
||||
passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||
}
|
48
src/TwilightPrincessHD/Graphics/TPHD_Readme.md
Normal file
48
src/TwilightPrincessHD/Graphics/TPHD_Readme.md
Normal file
@ -0,0 +1,48 @@
|
||||
------
|
||||
### TLoZ Twilight Princess HD
|
||||
------
|
||||
### Graphic options
|
||||
|
||||
3840x4320 vert x2 SSAA - Runs the game at double vertical res balancing look and performance when super sampling. Run full screen scaling in stretched and bilinear when activating this option.
|
||||
|
||||
0.5 Sub scaling - Runs transparances and blur at half resolution, slight performance improvement (in higher resolutions).
|
||||
|
||||
UI 25% transp - Dims static GUI elements, making them slightly transparent. Reduces chance of burn in when using Oled or plasma display.
|
||||
|
||||
|
||||
### Nice to know when creating a custom resolution
|
||||
|
||||
There are some issues with AO and light sources, to mitigate this some “sub” viewports need to scale evenly. XCX uses a similar approach to get smooth shadow transitions.
|
||||
|
||||
Example:
|
||||
```
|
||||
[Preset]
|
||||
name = 3440x1440 (21:9)
|
||||
$width = 3440
|
||||
$height = 1440
|
||||
$gameWidth= 1920
|
||||
$gameHeight= 1080
|
||||
$lightSource = 1.5
|
||||
$scaleShader = (2560.0/3440.0)
|
||||
$aspectRatio = (43.0/18.0)
|
||||
```
|
||||
|
||||
Base resolution is 2560x1440 -> Uw patch res 3440
|
||||
|
||||
AO needs to be 2160 = 1440 * $lightSource = 1.5
|
||||
|
||||
We then need to scale back ultrawide to original aspect for all viewports using AO / light sources
|
||||
|
||||
2560 = 3440 *$scaleShader (2560.0/3440.0)
|
||||
|
||||
```
|
||||
[TextureRedefine]
|
||||
width = 1024
|
||||
height = 544
|
||||
formats = 0x001
|
||||
overwriteWidth = ($width/$gameWidth) * (1024*$lightSource*$scaleShader)
|
||||
overwriteHeight = ($height/$gameHeight) * (544*$lightSource)
|
||||
```
|
||||
![21:9](TP21_9.jpg)
|
||||
|
||||
|
@ -0,0 +1,102 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
#extension GL_ARB_shading_language_packing : enable
|
||||
// shader cac95df4d2d6f5b8
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
//uncomment to remove pillarbox
|
||||
uniform ivec4 uf_remappedVS[8];
|
||||
layout(location = 0) in uvec4 attrDataSem0;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
int clampFI32(int v)
|
||||
{
|
||||
if( v == 0x7FFFFFFF )
|
||||
return floatBitsToInt(1.0);
|
||||
else if( v == 0xFFFFFFFF )
|
||||
return floatBitsToInt(0.0);
|
||||
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||
}
|
||||
float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 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 = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R127f.w = R1f.w;
|
||||
PS0f = R127f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.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;
|
||||
R127f.z = tempf.x;
|
||||
// 3
|
||||
R1f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,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 = R1f.x;
|
||||
PV1f.y = R1f.x;
|
||||
PV1f.z = R1f.x;
|
||||
PV1f.w = R1f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.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;
|
||||
R1f.y = tempf.x;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R1f.z = tempf.x;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R1f.w = tempf.x;
|
||||
// 7
|
||||
//R0f.xyz = vec3(intBitsToFloat(uf_remappedVS[7].x),intBitsToFloat(uf_remappedVS[7].y),intBitsToFloat(uf_remappedVS[7].z));
|
||||
R0f.w = intBitsToFloat(uf_remappedVS[7].w);
|
||||
// export
|
||||
//gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
}
|
@ -0,0 +1,146 @@
|
||||
#version 450
|
||||
#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 acbedb86f89efae4
|
||||
//mapscreen bg
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
layout(location = 0) 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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 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)));
|
||||
// skipped unused attribute for r8
|
||||
attrDecoder.xy = attrDataSem2.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
|
||||
R127f.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R1f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.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;
|
||||
R127f.z = tempf.x;
|
||||
R3f.x = 0.0;
|
||||
PS0f = R3f.x;
|
||||
// 3
|
||||
R1f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R1f.x;
|
||||
PV1f.y = R1f.x;
|
||||
PV1f.z = R1f.x;
|
||||
PV1f.w = R1f.x;
|
||||
R0f.x = R2f.x;
|
||||
PS1f = R0f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R1f.y = tempf.x;
|
||||
R0f.y = R2f.y;
|
||||
PS0f = R0f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R1f.z = tempf.x;
|
||||
R0f.z = R127f.w;
|
||||
PS1f = R0f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R1f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R1f.x*UIx, R1f.y*UIy, R1f.z, R1f.w));
|
||||
// export
|
||||
passParameterSem1 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
}
|
@ -0,0 +1,151 @@
|
||||
#version 450
|
||||
#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 aebb1e76797684a2
|
||||
//UI text bg
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
layout(location = 0) out vec4 passParameterSem0;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 R4f = 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;
|
||||
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
||||
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
|
||||
attrDecoder.xy = attrDataSem2.xy;
|
||||
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
||||
attrDecoder.z = 0;
|
||||
attrDecoder.w = 0;
|
||||
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
// 0
|
||||
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R2f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.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;
|
||||
R127f.z = tempf.x;
|
||||
R4f.x = 0.0;
|
||||
PS0f = R4f.x;
|
||||
// 3
|
||||
R2f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R2f.x;
|
||||
PV1f.y = R2f.x;
|
||||
PV1f.z = R2f.x;
|
||||
PV1f.w = R2f.x;
|
||||
R0f.x = R3f.x;
|
||||
PS1f = R0f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R2f.y = tempf.x;
|
||||
R0f.y = R3f.y;
|
||||
PS0f = R0f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R2f.z = tempf.x;
|
||||
R0f.z = R127f.w;
|
||||
PS1f = R0f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R2f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R2f.x*UIx, R2f.y*UIy, R2f.z, R2f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||
// export
|
||||
passParameterSem2 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
}
|
@ -0,0 +1,165 @@
|
||||
#version 450
|
||||
#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 b5241d6db4feef42
|
||||
//selection highlight
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[10];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[10];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem2;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
layout(location = 0) out vec4 passParameterSem0;
|
||||
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()
|
||||
{
|
||||
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 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 = attrDataSem2.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
|
||||
R127f.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R1f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R3f.z = 1.0;
|
||||
PS1f = R3f.z;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.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;
|
||||
R127f.z = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS0f = R127f.w;
|
||||
// 3
|
||||
R1f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R1f.x;
|
||||
PV1f.y = R1f.x;
|
||||
PV1f.z = R1f.x;
|
||||
PV1f.w = R1f.x;
|
||||
R2f.z = 0.0;
|
||||
PS1f = R2f.z;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R1f.y = tempf.x;
|
||||
R4f.z = R127f.w;
|
||||
PS0f = R4f.z;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R1f.z = tempf.x;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R1f.w = tempf.x;
|
||||
// 7
|
||||
R0f.xyz = vec3(intBitsToFloat(uf_remappedVS[7].x),intBitsToFloat(uf_remappedVS[7].y),intBitsToFloat(uf_remappedVS[7].z));
|
||||
R0f.w = intBitsToFloat(uf_remappedVS[7].w);
|
||||
// export
|
||||
SET_POSITION(vec4(R1f.x*UIx, R1f.y*UIy, R1f.z, R1f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
// 0
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R3f.z,R3f.z),vec4(intBitsToFloat(uf_remappedVS[8].x),intBitsToFloat(uf_remappedVS[8].y),intBitsToFloat(uf_remappedVS[8].z),intBitsToFloat(uf_remappedVS[8].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R3f.z,R3f.z),vec4(intBitsToFloat(uf_remappedVS[9].x),intBitsToFloat(uf_remappedVS[9].y),intBitsToFloat(uf_remappedVS[9].z),intBitsToFloat(uf_remappedVS[9].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R4f.x = PV0f.x;
|
||||
PS1f = R4f.x;
|
||||
// 2
|
||||
R4f.y = PV1f.x;
|
||||
// export
|
||||
passParameterSem2 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||
}
|
@ -0,0 +1,159 @@
|
||||
#version 450
|
||||
#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 c14019840473ff86
|
||||
//scale boxblur fx
|
||||
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 2) 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()
|
||||
{
|
||||
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 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;
|
||||
float scaler;
|
||||
R0f = passParameterSem0;
|
||||
scaler = uf_fragCoordScale.x;
|
||||
R0f.w = (textureGather(textureUnitPS1, R0f.xy).y);
|
||||
// 0
|
||||
R1f.x = R0f.x + intBitsToFloat(0xba088889);
|
||||
R1f.y = R0f.y + intBitsToFloat(0xba72b9d6);
|
||||
R2f.z = R0f.x;
|
||||
R2f.y = R0f.y + intBitsToFloat(0xba72b9d6);
|
||||
PS0f = R2f.y;
|
||||
// 1
|
||||
R3f.x = R0f.x + intBitsToFloat(0xba088889);
|
||||
R3f.y = R0f.y;
|
||||
R1f.xyzw = (textureGather(textureUnitPS1, R1f.xy).xyzw);
|
||||
R2f.yz = (textureGather(textureUnitPS1, R2f.zy).yz);
|
||||
R3f.xy = (textureGather(textureUnitPS1, R3f.xy).xy);
|
||||
// 0
|
||||
PV0f.x = R2f.z + R3f.x;
|
||||
PV0f.y = R1f.w + R0f.w;
|
||||
PV0f.z = R1f.z + R3f.y;
|
||||
PV0f.w = R1f.x + R2f.y;
|
||||
// 1
|
||||
R123f.x = (R1f.y * 2.0 + -(PV0f.x));
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (R1f.y * 2.0 + -(PV0f.y));
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (R1f.y * 2.0 + -(PV0f.z));
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (R1f.y * 2.0 + -(PV0f.w));
|
||||
PV1f.w = R123f.w;
|
||||
// 2
|
||||
PV0f.x = max(PV1f.x, -(PV1f.x));
|
||||
PV0f.y = max(PV1f.y, -(PV1f.y));
|
||||
PV0f.z = max(PV1f.z, -(PV1f.z));
|
||||
PV0f.w = max(PV1f.w, -(PV1f.w));
|
||||
// 3
|
||||
PV1f.x = PV0f.x + intBitsToFloat(0xb400d959);
|
||||
PV1f.y = PV0f.y + intBitsToFloat(0xb400d959);
|
||||
PV1f.z = PV0f.z + intBitsToFloat(0xb400d959);
|
||||
PV1f.w = PV0f.w + intBitsToFloat(0xb400d959);
|
||||
// 4
|
||||
R123f.x = intBitsToFloat(((PV1f.w >= 0.0)?(floatBitsToInt(1.0)):(0)));
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = intBitsToFloat(((PV1f.z >= 0.0)?(floatBitsToInt(1.0)):(0)));
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = intBitsToFloat(((PV1f.y >= 0.0)?(floatBitsToInt(1.0)):(0)));
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = intBitsToFloat(((PV1f.x >= 0.0)?(floatBitsToInt(1.0)):(0)));
|
||||
PV0f.w = R123f.w;
|
||||
// 5
|
||||
tempf.x = dot(vec4(PV0f.x,PV0f.y,PV0f.z,PV0f.w),vec4(0.25*scaler,0.25*scaler,0.25*scaler,0.25*scaler));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
// 6
|
||||
R127f.z = PV1f.x * intBitsToFloat(0x3f400000);
|
||||
PV0f.z = R127f.z;
|
||||
// 7
|
||||
R1f.x = (PV0f.z * intBitsToFloat(0xba088889) + R0f.x);
|
||||
R1f.y = R0f.y;
|
||||
R2f.z = R0f.x;
|
||||
R2f.y = (PV0f.z * intBitsToFloat(0xba72b9d6) + R0f.y);
|
||||
PS1f = R2f.y;
|
||||
// 8
|
||||
R3f.x = (R127f.z * intBitsToFloat(0x3a088889) + R0f.x);
|
||||
R3f.y = R0f.y;
|
||||
R0f.w = (R127f.z * intBitsToFloat(0x3a72b9d6) + R0f.y);
|
||||
R1f.xyzw = (texture(textureUnitPS0, R1f.xy).xyzw);
|
||||
R2f.xyzw = (texture(textureUnitPS0, R2f.zy).xyzw);
|
||||
R3f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
|
||||
R0f.xyzw = (texture(textureUnitPS0, R0f.xw).xyzw);
|
||||
// 0
|
||||
PV0f.x = R1f.w + R2f.w;
|
||||
PV0f.y = R1f.z + R2f.z;
|
||||
PV0f.z = R1f.y + R2f.y;
|
||||
PV0f.w = R1f.x + R2f.x;
|
||||
// 1
|
||||
PV1f.x = R3f.w + PV0f.x;
|
||||
PV1f.y = R3f.z + PV0f.y;
|
||||
PV1f.z = R3f.y + PV0f.z;
|
||||
PV1f.w = R3f.x + PV0f.w;
|
||||
// 2
|
||||
backupReg0f = R0f.y;
|
||||
backupReg1f = R0f.x;
|
||||
PV0f.x = R0f.w + PV1f.x;
|
||||
PV0f.y = R0f.z + PV1f.y;
|
||||
PV0f.z = backupReg0f + PV1f.z;
|
||||
PV0f.w = backupReg1f + PV1f.w;
|
||||
// 3
|
||||
R0f.x = PV0f.w * 0.25;
|
||||
R0f.y = PV0f.z * 0.25;
|
||||
R0f.z = PV0f.y * 0.25;
|
||||
R0f.w = PV0f.x * 0.25;
|
||||
// export
|
||||
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
}
|
@ -0,0 +1,567 @@
|
||||
#version 450
|
||||
#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 c612390d4c70f430 //cutscene focus n bloom
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) 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;
|
||||
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 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);
|
||||
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;
|
||||
float scaler;
|
||||
int tempResulti;
|
||||
ivec4 ARi = ivec4(0);
|
||||
bool predResult = true;
|
||||
vec3 cubeMapSTM;
|
||||
int cubeMapFaceId;
|
||||
R0f = GET_FRAGCOORD();
|
||||
scaler = uf_fragCoordScale.x;
|
||||
// 0
|
||||
R7f.x = R0f.x * intBitsToFloat(0x3b088889);
|
||||
PV0f.x = R7f.x;
|
||||
R7f.y = R0f.y * intBitsToFloat(0x3b72b9d6);
|
||||
PV0f.y = R7f.y;
|
||||
// 1
|
||||
R0f.x = PV0f.x + intBitsToFloat(0x3b088889) * scaler;
|
||||
R0f.y = PV0f.y;
|
||||
R1f.z = PV0f.y;
|
||||
R1f.x = PV0f.x + intBitsToFloat(0xbb088889) * scaler;
|
||||
PS1f = R1f.x;
|
||||
// 2
|
||||
R2f.x = R7f.x + intBitsToFloat(0x3b888889) * scaler;
|
||||
R2f.y = R7f.y;
|
||||
R4f.z = R7f.y;
|
||||
R4f.x = R7f.x + intBitsToFloat(0xbb888889) * scaler;
|
||||
PS0f = R4f.x;
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, R7f.xy,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xz,0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw);
|
||||
// 0
|
||||
backupReg0f = R0f.y;
|
||||
backupReg1f = R0f.x;
|
||||
backupReg2f = R0f.w;
|
||||
PV0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.z);
|
||||
PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg0f);
|
||||
PV0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg1f);
|
||||
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg2f);
|
||||
R0f.x = R7f.x + intBitsToFloat(0x3bccccce) * scaler;
|
||||
PS0f = R0f.x;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(R3f.w,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.w);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(R3f.y,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.y);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(R3f.x,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(R3f.z,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.x);
|
||||
PV1f.w = R123f.w;
|
||||
R0f.y = R7f.y;
|
||||
PS1f = R0f.y;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.y) + PV1f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.x) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.w) + PV1f.x);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.z) + PV1f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbbccccce) * scaler;
|
||||
PS0f = R1f.x;
|
||||
// 3
|
||||
backupReg0f = R2f.z;
|
||||
R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.w) + PV0f.z);
|
||||
R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.x) + PV0f.y);
|
||||
R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),backupReg0f) + PV0f.w);
|
||||
R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.y) + PV0f.x);
|
||||
R1f.y = R7f.y;
|
||||
PS1f = R1f.y;
|
||||
// 4
|
||||
R2f.x = R7f.x + intBitsToFloat(0x3c088889) * scaler;
|
||||
R2f.y = R7f.y;
|
||||
R6f.z = R7f.y;
|
||||
R6f.x = R7f.x + intBitsToFloat(0xbc088889) * scaler;
|
||||
PS0f = R6f.x;
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, R4f.xz,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.x) + R3f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.w) + R3f.x);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.z) + R2f.z);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.y) + R2f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R3f.x = R7f.x + intBitsToFloat(0x3c2aaaab) * scaler;
|
||||
PS0f = R3f.x;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.x) + PV0f.x);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.w) + PV0f.y);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.z) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.y) + PV0f.w);
|
||||
PV1f.w = R123f.w;
|
||||
R3f.y = R7f.y;
|
||||
PS1f = R3f.y;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.w) + PV1f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.z) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.y) + PV1f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.x) + PV1f.x);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbc2aaaab) * scaler;
|
||||
PS0f = R1f.x;
|
||||
// 3
|
||||
R0f.x = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.x);
|
||||
R0f.y = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.y);
|
||||
R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.z);
|
||||
R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.w);
|
||||
R1f.y = R7f.y;
|
||||
PS1f = R1f.y;
|
||||
// 4
|
||||
R5f.x = R7f.x + intBitsToFloat(0x3c4cccce) * scaler;
|
||||
R5f.y = R7f.y;
|
||||
R4f.z = R7f.y;
|
||||
R4f.x = R7f.x + intBitsToFloat(0xbc4cccce) * scaler;
|
||||
PS0f = R4f.x;
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, R6f.xz,0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.z) + R0f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.y) + R5f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.x) + R5f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.w) + R0f.x);
|
||||
PV0f.w = R123f.w;
|
||||
R0f.x = R7f.x + intBitsToFloat(0x3c6eeef0) * scaler;
|
||||
PS0f = R0f.x;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.w) + PV0f.w);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.y) + PV0f.y);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.x) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.z) + PV0f.x);
|
||||
PV1f.w = R123f.w;
|
||||
R0f.y = R7f.y;
|
||||
PS1f = R0f.y;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.y) + PV1f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.x) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.w) + PV1f.x);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.z) + PV1f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbc6eeef0) * scaler;
|
||||
PS0f = R1f.x;
|
||||
// 3
|
||||
backupReg0f = R2f.z;
|
||||
R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.w) + PV0f.z);
|
||||
R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.x) + PV0f.y);
|
||||
R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),backupReg0f) + PV0f.w);
|
||||
R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.y) + PV0f.x);
|
||||
R1f.y = R7f.y;
|
||||
PS1f = R1f.y;
|
||||
// 4
|
||||
R2f.x = R7f.x + intBitsToFloat(0x3c888889) * scaler;
|
||||
R2f.y = R7f.y;
|
||||
R6f.z = R7f.y;
|
||||
R6f.x = R7f.x + intBitsToFloat(0xbc888889) * scaler;
|
||||
PS0f = R6f.x;
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, R4f.xz,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.x) + R3f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.w) + R3f.x);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.z) + R2f.z);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.y) + R2f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R3f.x = R7f.x + intBitsToFloat(0x3c99999a) * scaler;
|
||||
PS0f = R3f.x;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.x) + PV0f.x);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.w) + PV0f.y);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.z) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.y) + PV0f.w);
|
||||
PV1f.w = R123f.w;
|
||||
R3f.y = R7f.y;
|
||||
PS1f = R3f.y;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.w) + PV1f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.z) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.y) + PV1f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.x) + PV1f.x);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbc99999a) * scaler;
|
||||
PS0f = R1f.x;
|
||||
// 3
|
||||
R0f.x = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.x);
|
||||
R0f.y = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.y);
|
||||
R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.z);
|
||||
R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.w);
|
||||
R1f.y = R7f.y;
|
||||
PS1f = R1f.y;
|
||||
// 4
|
||||
R5f.x = R7f.x + intBitsToFloat(0x3caaaaab) * scaler;
|
||||
R5f.y = R7f.y;
|
||||
R4f.z = R7f.y;
|
||||
R4f.x = R7f.x + intBitsToFloat(0xbcaaaaab) * scaler;
|
||||
PS0f = R4f.x;
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, R6f.xz,0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.z) + R0f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.y) + R5f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.x) + R5f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.w) + R0f.x);
|
||||
PV0f.w = R123f.w;
|
||||
R0f.x = R7f.x + intBitsToFloat(0x3cbbbbbc) * scaler;
|
||||
PS0f = R0f.x;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.w) + PV0f.w);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.y) + PV0f.y);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.x) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.z) + PV0f.x);
|
||||
PV1f.w = R123f.w;
|
||||
R0f.y = R7f.y;
|
||||
PS1f = R0f.y;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.y) + PV1f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.x) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.w) + PV1f.x);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.z) + PV1f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbcbbbbbc) * scaler;
|
||||
PS0f = R1f.x;
|
||||
// 3
|
||||
backupReg0f = R2f.z;
|
||||
R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.w) + PV0f.z);
|
||||
R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.x) + PV0f.y);
|
||||
R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg0f) + PV0f.w);
|
||||
R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.y) + PV0f.x);
|
||||
R1f.y = R7f.y;
|
||||
PS1f = R1f.y;
|
||||
// 4
|
||||
R2f.x = R7f.x + intBitsToFloat(0x3cccccce) * scaler;
|
||||
R2f.y = R7f.y;
|
||||
R6f.z = R7f.y;
|
||||
R6f.x = R7f.x + intBitsToFloat(0xbcccccce) * scaler;
|
||||
PS0f = R6f.x;
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, R4f.xz,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.x) + R3f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.w) + R3f.x);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.z) + R2f.z);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.y) + R2f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R3f.x = R7f.x + intBitsToFloat(0x3cdddddf) * scaler;
|
||||
PS0f = R3f.x;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.x) + PV0f.x);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.w) + PV0f.y);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.z) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.y) + PV0f.w);
|
||||
PV1f.w = R123f.w;
|
||||
R3f.y = R7f.y;
|
||||
PS1f = R3f.y;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R1f.w) + PV1f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R1f.z) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R1f.y) + PV1f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R1f.x) + PV1f.x);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbcdddddf) * scaler;
|
||||
PS0f = R1f.x;
|
||||
// 3
|
||||
R0f.x = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[3].x)) + PV0f.x);
|
||||
R0f.y = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[3].x)) + PV0f.y);
|
||||
R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[3].x)) + PV0f.z);
|
||||
R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[3].x)) + PV0f.w);
|
||||
R1f.y = R7f.y;
|
||||
PS1f = R1f.y;
|
||||
// 4
|
||||
R5f.x = R7f.x + intBitsToFloat(0x3ceeeef0) * scaler;
|
||||
R5f.y = R7f.y;
|
||||
R4f.z = R7f.y;
|
||||
R4f.x = R7f.x + intBitsToFloat(0xbceeeef0) * scaler;
|
||||
PS0f = R4f.x;
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, R6f.xz,0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),R6f.z) + R0f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),R6f.y) + R5f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),R6f.x) + R5f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),R6f.w) + R0f.x);
|
||||
PV0f.w = R123f.w;
|
||||
R0f.x = R7f.x + intBitsToFloat(0x3d000000) * scaler;
|
||||
PS0f = R0f.x;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R3f.w) + PV0f.w);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R3f.y) + PV0f.y);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R3f.x) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R3f.z) + PV0f.x);
|
||||
PV1f.w = R123f.w;
|
||||
R0f.y = R7f.y;
|
||||
PS1f = R0f.y;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R1f.y) + PV1f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R1f.x) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R1f.w) + PV1f.x);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R1f.z) + PV1f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbd000000) * scaler;
|
||||
PS0f = R1f.x;
|
||||
// 3
|
||||
backupReg0f = R2f.z;
|
||||
R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R2f.w) + PV0f.z);
|
||||
R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R2f.x) + PV0f.y);
|
||||
R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),backupReg0f) + PV0f.w);
|
||||
R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R2f.y) + PV0f.x);
|
||||
R1f.y = R7f.y;
|
||||
PS1f = R1f.y;
|
||||
// 4
|
||||
R2f.x = R7f.x + intBitsToFloat(0x3d088889) * scaler;
|
||||
R2f.y = R7f.y;
|
||||
R6f.z = R7f.y;
|
||||
R6f.x = R7f.x + intBitsToFloat(0xbd088889) * scaler;
|
||||
PS0f = R6f.x;
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, R4f.xz,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R4f.x) + R3f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R4f.w) + R3f.x);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R4f.z) + R2f.z);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R4f.y) + R2f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R3f.x = R7f.x + intBitsToFloat(0x3d111112) * scaler;
|
||||
PS0f = R3f.x;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R0f.x) + PV0f.x);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R0f.w) + PV0f.y);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R0f.z) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R0f.y) + PV0f.w);
|
||||
PV1f.w = R123f.w;
|
||||
R3f.y = R7f.y;
|
||||
PS1f = R3f.y;
|
||||
// 2
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R1f.w) + PV1f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R1f.z) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R1f.y) + PV1f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R1f.x) + PV1f.x);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.x = R7f.x + intBitsToFloat(0xbd111112) * scaler;
|
||||
PS0f = R1f.x;
|
||||
// 3
|
||||
R0f.x = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[4].x)) + PV0f.x);
|
||||
R0f.y = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[4].x)) + PV0f.y);
|
||||
R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[4].x)) + PV0f.z);
|
||||
R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[4].x)) + PV0f.w);
|
||||
R1f.y = R7f.y;
|
||||
PS1f = R1f.y;
|
||||
// 4
|
||||
R5f.x = R7f.x + intBitsToFloat(0x3d19999a) * scaler;
|
||||
R5f.y = R7f.y;
|
||||
R4f.z = R7f.y;
|
||||
R4f.x = R7f.x + intBitsToFloat(0xbd19999a) * scaler;
|
||||
PS0f = R4f.x;
|
||||
R6f.xyzw = (textureLod(textureUnitPS0, R6f.xz,0.0).xyzw);
|
||||
R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw);
|
||||
R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw);
|
||||
R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R6f.z) + R0f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R6f.y) + R5f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R6f.x) + R5f.w);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R6f.w) + R0f.x);
|
||||
PV0f.w = R123f.w;
|
||||
R0f.x = R7f.x + intBitsToFloat(0x3d222223) * scaler;
|
||||
PS0f = R0f.x;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R3f.w) + PV0f.w);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R3f.y) + PV0f.y);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R3f.x) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R3f.z) + PV0f.x);
|
||||
PV1f.w = R123f.w;
|
||||
R0f.y = R7f.y;
|
||||
PS1f = R0f.y;
|
||||
// 2
|
||||
backupReg0f = R7f.x;
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.y) + PV1f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.x) + PV1f.z);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.w) + PV1f.x);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.z) + PV1f.w);
|
||||
PV0f.w = R123f.w;
|
||||
R7f.x = backupReg0f + intBitsToFloat(0xbd222223) * scaler;
|
||||
PS0f = R7f.x;
|
||||
// 3
|
||||
backupReg0f = R2f.x;
|
||||
backupReg1f = R2f.z;
|
||||
backupReg2f = R2f.y;
|
||||
R2f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R2f.w) + PV0f.z);
|
||||
R2f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),backupReg0f) + PV0f.y);
|
||||
R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),backupReg1f) + PV0f.w);
|
||||
R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),backupReg2f) + PV0f.x);
|
||||
R4f.xyzw = (textureLod(textureUnitPS0, R4f.xz,0.0).xyzw);
|
||||
R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw);
|
||||
R7f.xyzw = (textureLod(textureUnitPS0, R7f.xy,0.0).xyzw);
|
||||
// 0
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R4f.x) + R2f.y);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R4f.w) + R2f.x);
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R4f.z) + R2f.z);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R4f.y) + R2f.w);
|
||||
PV0f.w = R123f.w;
|
||||
// 1
|
||||
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R0f.x) + PV0f.x);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R0f.w) + PV0f.y);
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R0f.z) + PV0f.z);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R0f.y) + PV0f.w);
|
||||
PV1f.w = R123f.w;
|
||||
// 2
|
||||
backupReg0f = R7f.x;
|
||||
backupReg1f = R7f.y;
|
||||
backupReg2f = R7f.z;
|
||||
backupReg3f = R7f.w;
|
||||
R7f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),backupReg0f) + PV1f.x);
|
||||
R7f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),backupReg1f) + PV1f.w);
|
||||
R7f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),backupReg2f) + PV1f.z);
|
||||
R7f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),backupReg3f) + PV1f.y);
|
||||
// export
|
||||
passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||
}
|
@ -0,0 +1,147 @@
|
||||
#version 450
|
||||
#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 ce7aa5fffc34aab0
|
||||
//action buttons
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
const float UItransp = $UItransp;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 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;
|
||||
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
||||
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
|
||||
attrDecoder.xy = attrDataSem2.xy;
|
||||
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
||||
attrDecoder.z = 0;
|
||||
attrDecoder.w = 0;
|
||||
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
// 0
|
||||
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R2f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.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;
|
||||
R127f.z = tempf.x;
|
||||
R2f.x = R3f.x;
|
||||
PS0f = R2f.x;
|
||||
// 3
|
||||
R3f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R3f.x;
|
||||
PV1f.y = R3f.x;
|
||||
PV1f.z = R3f.x;
|
||||
PV1f.w = R3f.x;
|
||||
R2f.y = R3f.y;
|
||||
PS1f = R2f.y;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R3f.y = tempf.x;
|
||||
R2f.z = R127f.w;
|
||||
PS0f = R2f.z;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R3f.z = tempf.x;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R3f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R3f.x*UIx, R3f.y*UIy, R3f.z, R3f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w*UItransp);
|
||||
// export
|
||||
passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
|
||||
}
|
@ -0,0 +1,150 @@
|
||||
#version 450
|
||||
#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 e9d455979cba2505
|
||||
//dungeon objects
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
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()
|
||||
{
|
||||
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)));
|
||||
// skipped unused attribute for r5
|
||||
attrDecoder.xy = attrDataSem2.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
|
||||
R127f.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R1f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.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;
|
||||
R127f.z = tempf.x;
|
||||
R0f.x = 0.0;
|
||||
PS0f = R0f.x;
|
||||
// 3
|
||||
R1f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R1f.x;
|
||||
PV1f.y = R1f.x;
|
||||
PV1f.z = R1f.x;
|
||||
PV1f.w = R1f.x;
|
||||
R3f.x = R2f.x;
|
||||
PS1f = R3f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R1f.y = tempf.x;
|
||||
R3f.y = R2f.y;
|
||||
PS0f = R3f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R1f.z = tempf.x;
|
||||
R3f.z = R127f.w;
|
||||
PS1f = R3f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R1f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R1f.x*UIx, R1f.y*UIy, R1f.z, R1f.w));
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
// export
|
||||
passParameterSem1 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||
// export
|
||||
passParameterSem2 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||
}
|
@ -0,0 +1,151 @@
|
||||
#version 450
|
||||
#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 eec9403a9d54137e
|
||||
//Map bg middle layer
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
layout(location = 0) out vec4 passParameterSem0;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 R4f = 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;
|
||||
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
||||
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
|
||||
attrDecoder.xy = attrDataSem2.xy;
|
||||
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
||||
attrDecoder.z = 0;
|
||||
attrDecoder.w = 0;
|
||||
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
// 0
|
||||
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R2f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.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;
|
||||
R127f.z = tempf.x;
|
||||
R4f.x = 0.0;
|
||||
PS0f = R4f.x;
|
||||
// 3
|
||||
R2f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R2f.x;
|
||||
PV1f.y = R2f.x;
|
||||
PV1f.z = R2f.x;
|
||||
PV1f.w = R2f.x;
|
||||
R0f.x = R3f.x;
|
||||
PS1f = R0f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R2f.y = tempf.x;
|
||||
R0f.y = R3f.y;
|
||||
PS0f = R0f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R2f.z = tempf.x;
|
||||
R0f.z = R127f.w;
|
||||
PS1f = R0f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R2f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R2f.x*UIx, R2f.y*UIy, R2f.z, R2f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||
// export
|
||||
passParameterSem2 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
}
|
@ -0,0 +1,145 @@
|
||||
#version 450
|
||||
#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 f017fcfaf1bd28ab
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
|
||||
//amiibo
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
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 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
|
||||
R127f.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R1f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.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;
|
||||
R127f.z = tempf.x;
|
||||
R3f.x = 0.0;
|
||||
PS0f = R3f.x;
|
||||
// 3
|
||||
R1f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R1f.x;
|
||||
PV1f.y = R1f.x;
|
||||
PV1f.z = R1f.x;
|
||||
PV1f.w = R1f.x;
|
||||
R0f.x = R2f.x;
|
||||
PS1f = R0f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R1f.y = tempf.x;
|
||||
R0f.y = R2f.y;
|
||||
PS0f = R0f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R1f.z = tempf.x;
|
||||
R0f.z = R127f.w;
|
||||
PS1f = R0f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R1f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R1f.x*UIx, R1f.y*UIy, R1f.z, R1f.w));
|
||||
// export
|
||||
passParameterSem1 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
}
|
@ -0,0 +1,152 @@
|
||||
#version 450
|
||||
#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 f5034fe4aa1fec23
|
||||
//map fade
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
float gl_PointSize;
|
||||
};
|
||||
layout(location = 0) out vec4 passParameterSem0;
|
||||
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()
|
||||
{
|
||||
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 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;
|
||||
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
||||
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
|
||||
attrDecoder.xy = attrDataSem2.xy;
|
||||
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
||||
attrDecoder.z = 0;
|
||||
attrDecoder.w = 0;
|
||||
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
// 0
|
||||
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R2f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.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;
|
||||
R127f.z = tempf.x;
|
||||
R4f.x = 0.0;
|
||||
PS0f = R4f.x;
|
||||
// 3
|
||||
R2f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R2f.x;
|
||||
PV1f.y = R2f.x;
|
||||
PV1f.z = R2f.x;
|
||||
PV1f.w = R2f.x;
|
||||
R0f.x = R3f.x;
|
||||
PS1f = R0f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R2f.y = tempf.x;
|
||||
R0f.y = R3f.y;
|
||||
PS0f = R0f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R2f.z = tempf.x;
|
||||
R0f.z = R127f.w;
|
||||
PS1f = R0f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R2f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R2f.x*UIx, R2f.y*UIy, R2f.z, R2f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||
// export
|
||||
passParameterSem2 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
}
|
@ -0,0 +1,154 @@
|
||||
#version 450
|
||||
#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 fc148873ef522f50
|
||||
// objective shadow
|
||||
const float UIx = $UIAspectX;
|
||||
const float UIy = $UIAspectY;
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedVS[7];
|
||||
#endif
|
||||
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
||||
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
||||
ATTR_LAYOUT(0, 2) in uvec4 attrDataSem2;
|
||||
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 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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R2f = vec4(0.0);
|
||||
vec4 R3f = vec4(0.0);
|
||||
vec4 R4f = 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;
|
||||
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
||||
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
|
||||
attrDecoder.xy = attrDataSem2.xy;
|
||||
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
||||
attrDecoder.z = 0;
|
||||
attrDecoder.w = 0;
|
||||
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
||||
// 0
|
||||
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
|
||||
PV0f.x = R127f.x;
|
||||
PV0f.y = R127f.x;
|
||||
PV0f.z = R127f.x;
|
||||
PV0f.w = R127f.x;
|
||||
R126f.w = R2f.w;
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R127f.y = tempf.x;
|
||||
R127f.w = 1.0;
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.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;
|
||||
R127f.z = tempf.x;
|
||||
R0f.x = 0.0;
|
||||
PS0f = R0f.x;
|
||||
// 3
|
||||
R2f.x = dot(vec4(R127f.x,R127f.y,PV0f.x,R126f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
|
||||
PV1f.x = R2f.x;
|
||||
PV1f.y = R2f.x;
|
||||
PV1f.z = R2f.x;
|
||||
PV1f.w = R2f.x;
|
||||
R4f.x = R3f.x;
|
||||
PS1f = R4f.x;
|
||||
// 4
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.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;
|
||||
R2f.y = tempf.x;
|
||||
R4f.y = R3f.y;
|
||||
PS0f = R4f.y;
|
||||
// 5
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
|
||||
PV1f.x = tempf.x;
|
||||
PV1f.y = tempf.x;
|
||||
PV1f.z = tempf.x;
|
||||
PV1f.w = tempf.x;
|
||||
R2f.z = tempf.x;
|
||||
R4f.z = R127f.w;
|
||||
PS1f = R4f.z;
|
||||
// 6
|
||||
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R126f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
|
||||
PV0f.x = tempf.x;
|
||||
PV0f.y = tempf.x;
|
||||
PV0f.z = tempf.x;
|
||||
PV0f.w = tempf.x;
|
||||
R2f.w = tempf.x;
|
||||
// export
|
||||
SET_POSITION(vec4(R2f.x*UIx, R2f.y, R2f.z, R2f.w));
|
||||
// export
|
||||
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||
// export
|
||||
// skipped export to semanticId 255
|
||||
// export
|
||||
passParameterSem2 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||
// export
|
||||
passParameterSem3 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||
}
|
8
src/TwilightPrincessHD/Graphics/patch_resolution.asm
Normal file
8
src/TwilightPrincessHD/Graphics/patch_resolution.asm
Normal file
@ -0,0 +1,8 @@
|
||||
[TwilightPrincessHD_Resolution]
|
||||
moduleMatches = 0x1A03E108, 0xA3175EEA ; v81(EU/NA), v82(JP)
|
||||
0x1005AAD8 = .float $aspectRatio
|
||||
_aspectAddr = 0x1006AAD8
|
||||
0x028D75B8 = lis r11, _aspectAddr@h
|
||||
0x028D75C0 = lfs f0, _aspectAddr@l(r11) ; Main 3d Aspect
|
||||
0x029BB184 = lis r12, _aspectAddr@h
|
||||
0x029BB188 = lfs f2, _aspectAddr@l(r12) ; may just be the intro zelda graphic
|
1320
src/TwilightPrincessHD/Graphics/rules.txt
Normal file
1320
src/TwilightPrincessHD/Graphics/rules.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,72 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
// shader 14e81f55c62139c7
|
||||
// Used for: Removing the button prompts in the HUD
|
||||
|
||||
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
#endif
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 1) in vec4 passParameterSem1;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
int clampFI32(int v)
|
||||
{
|
||||
if( v == 0x7FFFFFFF )
|
||||
return floatBitsToInt(1.0);
|
||||
else if( v == 0xFFFFFFFF )
|
||||
return floatBitsToInt(0.0);
|
||||
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||
}
|
||||
float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||
float PS0f = 0.0, PS1f = 0.0;
|
||||
vec4 tempf = vec4(0.0);
|
||||
float tempResultf;
|
||||
int tempResulti;
|
||||
ivec4 ARi = ivec4(0);
|
||||
bool predResult = true;
|
||||
vec3 cubeMapSTM;
|
||||
int cubeMapFaceId;
|
||||
R0f = passParameterSem0;
|
||||
R1f = passParameterSem1;
|
||||
R1f.xyzw = (texture(textureUnitPS0, R1f.xy).xyzw);
|
||||
// 0
|
||||
backupReg0f = R0f.x;
|
||||
backupReg1f = R0f.y;
|
||||
backupReg2f = R0f.z;
|
||||
backupReg3f = R0f.w;
|
||||
R0f.x = mul_nonIEEE(backupReg0f, R1f.x);
|
||||
R0f.x = clamp(R0f.x, 0.0, 1.0);
|
||||
R0f.y = mul_nonIEEE(backupReg1f, R1f.y);
|
||||
R0f.y = clamp(R0f.y, 0.0, 1.0);
|
||||
R0f.z = mul_nonIEEE(backupReg2f, R1f.z);
|
||||
R0f.z = clamp(R0f.z, 0.0, 1.0);
|
||||
R0f.w = mul_nonIEEE(backupReg3f, R1f.w);
|
||||
R0f.w = clamp(R0f.w, 0.0, 1.0);
|
||||
// export
|
||||
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, 0.0);
|
||||
}
|
@ -0,0 +1,125 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
// shader 4e1d21b4863fc48c
|
||||
// Used for: Removes the HUD icons like the hearts
|
||||
|
||||
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
#endif
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[2];
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[2];
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 1) in vec4 passParameterSem2;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 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 = passParameterSem2;
|
||||
R1f.xyzw = (texture(textureUnitPS0, R1f.xy).xyzw);
|
||||
// 0
|
||||
PV0f.x = intBitsToFloat(uf_remappedPS[0].w) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.y = intBitsToFloat(uf_remappedPS[0].z) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.z = intBitsToFloat(uf_remappedPS[0].y) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.w = intBitsToFloat(uf_remappedPS[0].x) * intBitsToFloat(0x3f7f0000);
|
||||
// 1
|
||||
PV1f.x = fract(PV0f.w);
|
||||
R127f.y = fract(PV0f.x);
|
||||
R127f.z = fract(PV0f.y);
|
||||
PV1f.w = fract(PV0f.z);
|
||||
R127f.w = intBitsToFloat(uf_remappedPS[1].x) * intBitsToFloat(0x3f7f0000);
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
R127f.x = intBitsToFloat(uf_remappedPS[1].w) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.y = intBitsToFloat(uf_remappedPS[1].z) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.z = intBitsToFloat(uf_remappedPS[1].y) * intBitsToFloat(0x3f7f0000);
|
||||
R126f.w = PV1f.x * intBitsToFloat(0x3f808081);
|
||||
R126f.x = PV1f.w * intBitsToFloat(0x3f808081);
|
||||
PS0f = R126f.x;
|
||||
// 3
|
||||
R125f.x = R127f.y * intBitsToFloat(0x3f808081);
|
||||
PV1f.y = fract(R127f.w);
|
||||
PV1f.z = fract(PV0f.z);
|
||||
R127f.w = R127f.z * intBitsToFloat(0x3f808081);
|
||||
PV1f.w = R127f.w;
|
||||
PS1f = fract(PV0f.y);
|
||||
// 4
|
||||
PV0f.x = fract(R127f.x);
|
||||
R123f.y = (PS1f * intBitsToFloat(0x3f808081) + -(PV1f.w));
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (PV1f.z * intBitsToFloat(0x3f808081) + -(R126f.x));
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (PV1f.y * intBitsToFloat(0x3f808081) + -(R126f.w));
|
||||
PV0f.w = R123f.w;
|
||||
// 5
|
||||
R123f.x = (mul_nonIEEE(PV0f.w,R1f.x) + R126f.w);
|
||||
R123f.x = clamp(R123f.x, 0.0, 1.0);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (PV0f.x * intBitsToFloat(0x3f808081) + -(R125f.x));
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(PV0f.y,R1f.z) + R127f.w);
|
||||
R123f.z = clamp(R123f.z, 0.0, 1.0);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(PV0f.z,R1f.y) + R126f.x);
|
||||
R123f.w = clamp(R123f.w, 0.0, 1.0);
|
||||
PV1f.w = R123f.w;
|
||||
// 6
|
||||
R123f.x = (mul_nonIEEE(PV1f.y,R1f.w) + R125f.x);
|
||||
R123f.x = clamp(R123f.x, 0.0, 1.0);
|
||||
PV0f.x = R123f.x;
|
||||
R1f.y = mul_nonIEEE(R0f.y, PV1f.w);
|
||||
R1f.y = clamp(R1f.y, 0.0, 1.0);
|
||||
R1f.z = mul_nonIEEE(R0f.z, PV1f.z);
|
||||
R1f.z = clamp(R1f.z, 0.0, 1.0);
|
||||
R1f.x = mul_nonIEEE(R0f.x, PV1f.x);
|
||||
R1f.x = clamp(R1f.x, 0.0, 1.0);
|
||||
PS0f = R1f.x;
|
||||
// 7
|
||||
R1f.w = mul_nonIEEE(R0f.w, PV0f.x);
|
||||
R1f.w = clamp(R1f.w, 0.0, 1.0);
|
||||
// export
|
||||
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, 0.0);
|
||||
}
|
@ -0,0 +1,125 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
// shader 9f1ac253de80a927
|
||||
// Used for: Removing the blinking button in the HUD
|
||||
|
||||
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
#endif
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[2];
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[2];
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 1) in vec4 passParameterSem2;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 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 = passParameterSem2;
|
||||
R1f.xyzw = (texture(textureUnitPS0, R1f.xy).xyzw);
|
||||
// 0
|
||||
PV0f.x = intBitsToFloat(uf_remappedPS[0].w) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.y = intBitsToFloat(uf_remappedPS[0].z) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.z = intBitsToFloat(uf_remappedPS[0].y) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.w = intBitsToFloat(uf_remappedPS[0].x) * intBitsToFloat(0x3f7f0000);
|
||||
// 1
|
||||
PV1f.x = fract(PV0f.w);
|
||||
R127f.y = fract(PV0f.x);
|
||||
R127f.z = fract(PV0f.y);
|
||||
PV1f.w = fract(PV0f.z);
|
||||
R127f.w = intBitsToFloat(uf_remappedPS[1].x) * intBitsToFloat(0x3f7f0000);
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
R127f.x = intBitsToFloat(uf_remappedPS[1].w) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.y = intBitsToFloat(uf_remappedPS[1].z) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.z = intBitsToFloat(uf_remappedPS[1].y) * intBitsToFloat(0x3f7f0000);
|
||||
R126f.w = PV1f.x * intBitsToFloat(0x3f808081);
|
||||
R126f.x = PV1f.w * intBitsToFloat(0x3f808081);
|
||||
PS0f = R126f.x;
|
||||
// 3
|
||||
R125f.x = R127f.y * intBitsToFloat(0x3f808081);
|
||||
PV1f.y = fract(R127f.w);
|
||||
PV1f.z = fract(PV0f.z);
|
||||
R127f.w = R127f.z * intBitsToFloat(0x3f808081);
|
||||
PV1f.w = R127f.w;
|
||||
PS1f = fract(PV0f.y);
|
||||
// 4
|
||||
PV0f.x = fract(R127f.x);
|
||||
R123f.y = (PS1f * intBitsToFloat(0x3f808081) + -(PV1f.w));
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (PV1f.z * intBitsToFloat(0x3f808081) + -(R126f.x));
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (PV1f.y * intBitsToFloat(0x3f808081) + -(R126f.w));
|
||||
PV0f.w = R123f.w;
|
||||
// 5
|
||||
R123f.x = (mul_nonIEEE(PV0f.w,R1f.x) + R126f.w);
|
||||
R123f.x = clamp(R123f.x, 0.0, 1.0);
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (PV0f.x * intBitsToFloat(0x3f808081) + -(R125f.x));
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (mul_nonIEEE(PV0f.y,R1f.z) + R127f.w);
|
||||
R123f.z = clamp(R123f.z, 0.0, 1.0);
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(PV0f.z,R1f.y) + R126f.x);
|
||||
R123f.w = clamp(R123f.w, 0.0, 1.0);
|
||||
PV1f.w = R123f.w;
|
||||
// 6
|
||||
R123f.x = (mul_nonIEEE(PV1f.y,R1f.w) + R125f.x);
|
||||
R123f.x = clamp(R123f.x, 0.0, 1.0);
|
||||
PV0f.x = R123f.x;
|
||||
R1f.y = mul_nonIEEE(R0f.y, PV1f.w);
|
||||
R1f.y = clamp(R1f.y, 0.0, 1.0);
|
||||
R1f.z = mul_nonIEEE(R0f.z, PV1f.z);
|
||||
R1f.z = clamp(R1f.z, 0.0, 1.0);
|
||||
R1f.x = mul_nonIEEE(R0f.x, PV1f.x);
|
||||
R1f.x = clamp(R1f.x, 0.0, 1.0);
|
||||
PS0f = R1f.x;
|
||||
// 7
|
||||
R1f.w = mul_nonIEEE(R0f.w, PV0f.x);
|
||||
R1f.w = clamp(R1f.w, 0.0, 1.0);
|
||||
// export
|
||||
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, 0.0);
|
||||
}
|
@ -0,0 +1,137 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
// shader acd66e3570ee3a72
|
||||
// Used for: Removing the last bit of text in the HUD
|
||||
|
||||
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
#endif
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[2];
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[2];
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 1) in vec4 passParameterSem2;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 R122f = vec4(0.0);
|
||||
vec4 R123f = vec4(0.0);
|
||||
vec4 R124f = 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 = passParameterSem2;
|
||||
R1f.xyzw = (texture(textureUnitPS0, R1f.xy).xyzw);
|
||||
// 0
|
||||
PV0f.x = intBitsToFloat(uf_remappedPS[0].w) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.y = intBitsToFloat(uf_remappedPS[0].z) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.z = intBitsToFloat(uf_remappedPS[0].y) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.w = intBitsToFloat(uf_remappedPS[0].x) * intBitsToFloat(0x3f7f0000);
|
||||
R126f.w = R1f.x;
|
||||
R126f.w = clamp(R126f.w, 0.0, 1.0);
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
PV1f.x = fract(PV0f.w);
|
||||
R127f.y = fract(PV0f.x);
|
||||
R127f.z = fract(PV0f.y);
|
||||
PV1f.w = fract(PV0f.z);
|
||||
R127f.w = intBitsToFloat(uf_remappedPS[1].x) * intBitsToFloat(0x3f7f0000);
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
R127f.x = intBitsToFloat(uf_remappedPS[1].w) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.y = intBitsToFloat(uf_remappedPS[1].z) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.z = intBitsToFloat(uf_remappedPS[1].y) * intBitsToFloat(0x3f7f0000);
|
||||
R125f.w = PV1f.x * intBitsToFloat(0x3f808081);
|
||||
R126f.x = PV1f.w * intBitsToFloat(0x3f808081);
|
||||
PS0f = R126f.x;
|
||||
// 3
|
||||
backupReg0f = R127f.z;
|
||||
R125f.x = R127f.y * intBitsToFloat(0x3f808081);
|
||||
PV1f.y = fract(R127f.w);
|
||||
R127f.z = fract(PV0f.z);
|
||||
R127f.w = backupReg0f * intBitsToFloat(0x3f808081);
|
||||
R126f.z = fract(PV0f.y);
|
||||
PS1f = R126f.z;
|
||||
// 4
|
||||
PV0f.x = fract(R127f.x);
|
||||
R127f.y = R1f.z;
|
||||
R127f.y = clamp(R127f.y, 0.0, 1.0);
|
||||
R125f.z = R1f.y;
|
||||
R125f.z = clamp(R125f.z, 0.0, 1.0);
|
||||
R124f.w = R1f.w;
|
||||
R124f.w = clamp(R124f.w, 0.0, 1.0);
|
||||
R122f.x = (PV1f.y * intBitsToFloat(0x3f808081) + -(R125f.w));
|
||||
PS0f = R122f.x;
|
||||
// 5
|
||||
R123f.x = (PV0f.x * intBitsToFloat(0x3f808081) + -(R125f.x));
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (R126f.z * intBitsToFloat(0x3f808081) + -(R127f.w));
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (R127f.z * intBitsToFloat(0x3f808081) + -(R126f.x));
|
||||
PV1f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(PS0f,R126f.w) + R125f.w);
|
||||
R123f.w = clamp(R123f.w, 0.0, 1.0);
|
||||
PV1f.w = R123f.w;
|
||||
// 6
|
||||
R123f.x = (mul_nonIEEE(PV1f.x,R124f.w) + R125f.x);
|
||||
R123f.x = clamp(R123f.x, 0.0, 1.0);
|
||||
PV0f.x = R123f.x;
|
||||
R123f.z = (mul_nonIEEE(PV1f.y,R127f.y) + R127f.w);
|
||||
R123f.z = clamp(R123f.z, 0.0, 1.0);
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (mul_nonIEEE(PV1f.z,R125f.z) + R126f.x);
|
||||
R123f.w = clamp(R123f.w, 0.0, 1.0);
|
||||
PV0f.w = R123f.w;
|
||||
R1f.x = mul_nonIEEE(R0f.x, PV1f.w);
|
||||
R1f.x = clamp(R1f.x, 0.0, 1.0);
|
||||
PS0f = R1f.x;
|
||||
// 7
|
||||
R1f.y = mul_nonIEEE(R0f.y, PV0f.w);
|
||||
R1f.y = clamp(R1f.y, 0.0, 1.0);
|
||||
R1f.z = mul_nonIEEE(R0f.z, PV0f.z);
|
||||
R1f.z = clamp(R1f.z, 0.0, 1.0);
|
||||
R1f.w = mul_nonIEEE(R0f.w, PV0f.x);
|
||||
R1f.w = clamp(R1f.w, 0.0, 1.0);
|
||||
// export
|
||||
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||
}
|
@ -0,0 +1,122 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
// shader b567aed28aa42ec7
|
||||
// Used for: Removing the text from the HUD
|
||||
|
||||
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
#endif
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[2];
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[2];
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 1) in vec4 passParameterSem2;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 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 = passParameterSem2;
|
||||
R1f.w = (texture(textureUnitPS0, R1f.xy).w);
|
||||
// 0
|
||||
PV0f.x = intBitsToFloat(uf_remappedPS[0].w) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.y = intBitsToFloat(uf_remappedPS[0].z) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.z = intBitsToFloat(uf_remappedPS[0].y) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.w = intBitsToFloat(uf_remappedPS[0].x) * intBitsToFloat(0x3f7f0000);
|
||||
// 1
|
||||
PV1f.x = fract(PV0f.w);
|
||||
R127f.y = fract(PV0f.x);
|
||||
R127f.z = fract(PV0f.y);
|
||||
PV1f.w = fract(PV0f.z);
|
||||
R127f.w = intBitsToFloat(uf_remappedPS[1].x) * intBitsToFloat(0x3f7f0000);
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
R127f.x = intBitsToFloat(uf_remappedPS[1].w) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.y = intBitsToFloat(uf_remappedPS[1].z) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.z = intBitsToFloat(uf_remappedPS[1].y) * intBitsToFloat(0x3f7f0000);
|
||||
R126f.w = PV1f.x * intBitsToFloat(0x3f808081);
|
||||
R126f.x = PV1f.w * intBitsToFloat(0x3f808081);
|
||||
PS0f = R126f.x;
|
||||
// 3
|
||||
R125f.x = R127f.y * intBitsToFloat(0x3f808081);
|
||||
PV1f.y = fract(R127f.w);
|
||||
PV1f.z = fract(PV0f.z);
|
||||
R127f.w = R127f.z * intBitsToFloat(0x3f808081);
|
||||
PV1f.w = R127f.w;
|
||||
PS1f = fract(PV0f.y);
|
||||
// 4
|
||||
PV0f.x = fract(R127f.x);
|
||||
R123f.y = (PS1f * intBitsToFloat(0x3f808081) + -(PV1f.w));
|
||||
PV0f.y = R123f.y;
|
||||
R123f.z = (PV1f.z * intBitsToFloat(0x3f808081) + -(R126f.x));
|
||||
PV0f.z = R123f.z;
|
||||
R123f.w = (PV1f.y * intBitsToFloat(0x3f808081) + -(R126f.w));
|
||||
PV0f.w = R123f.w;
|
||||
// 5
|
||||
PV1f.x = R126f.w + PV0f.w;
|
||||
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
|
||||
R123f.y = (PV0f.x * intBitsToFloat(0x3f808081) + -(R125f.x));
|
||||
PV1f.y = R123f.y;
|
||||
PV1f.z = R127f.w + PV0f.y;
|
||||
PV1f.z = clamp(PV1f.z, 0.0, 1.0);
|
||||
PV1f.w = R126f.x + PV0f.z;
|
||||
PV1f.w = clamp(PV1f.w, 0.0, 1.0);
|
||||
// 6
|
||||
R123f.x = (mul_nonIEEE(PV1f.y,R1f.w) + R125f.x);
|
||||
R123f.x = clamp(R123f.x, 0.0, 1.0);
|
||||
PV0f.x = R123f.x;
|
||||
R1f.y = mul_nonIEEE(R0f.y, PV1f.w);
|
||||
R1f.y = clamp(R1f.y, 0.0, 1.0);
|
||||
R1f.z = mul_nonIEEE(R0f.z, PV1f.z);
|
||||
R1f.z = clamp(R1f.z, 0.0, 1.0);
|
||||
R1f.x = mul_nonIEEE(R0f.x, PV1f.x);
|
||||
R1f.x = clamp(R1f.x, 0.0, 1.0);
|
||||
PS0f = R1f.x;
|
||||
// 7
|
||||
R1f.w = mul_nonIEEE(R0f.w, PV0f.x);
|
||||
R1f.w = clamp(R1f.w, 0.0, 1.0);
|
||||
// export
|
||||
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, 0.0);
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
// shader e264c779e7deb774
|
||||
// Used for: Removing the map from the HUD
|
||||
|
||||
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
#endif
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem1;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||
float PS0f = 0.0, PS1f = 0.0;
|
||||
vec4 tempf = vec4(0.0);
|
||||
float tempResultf;
|
||||
int tempResulti;
|
||||
ivec4 ARi = ivec4(0);
|
||||
bool predResult = true;
|
||||
vec3 cubeMapSTM;
|
||||
int cubeMapFaceId;
|
||||
R0f = passParameterSem1;
|
||||
R0f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw);
|
||||
// 0
|
||||
backupReg0f = R0f.x;
|
||||
backupReg1f = R0f.y;
|
||||
backupReg2f = R0f.z;
|
||||
backupReg3f = R0f.w;
|
||||
R0f.x = backupReg0f;
|
||||
R0f.x = clamp(R0f.x, 0.0, 1.0);
|
||||
R0f.y = backupReg1f;
|
||||
R0f.y = clamp(R0f.y, 0.0, 1.0);
|
||||
R0f.z = backupReg2f;
|
||||
R0f.z = clamp(R0f.z, 0.0, 1.0);
|
||||
R0f.w = backupReg3f;
|
||||
R0f.w = clamp(R0f.w, 0.0, 1.0);
|
||||
// export
|
||||
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, 0.0);
|
||||
}
|
@ -0,0 +1,122 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
// shader f6e03fd012597dda
|
||||
// Used for: Removing even more text from HUD
|
||||
|
||||
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
#endif
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[2];
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[2];
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem1;
|
||||
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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R122f = vec4(0.0);
|
||||
vec4 R123f = vec4(0.0);
|
||||
vec4 R124f = 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 = passParameterSem1;
|
||||
R0f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw);
|
||||
// 0
|
||||
backupReg0f = R0f.x;
|
||||
PV0f.x = intBitsToFloat(uf_remappedPS[0].w) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.y = intBitsToFloat(uf_remappedPS[0].z) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.z = intBitsToFloat(uf_remappedPS[0].y) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.w = intBitsToFloat(uf_remappedPS[0].x) * intBitsToFloat(0x3f7f0000);
|
||||
R126f.w = backupReg0f;
|
||||
R126f.w = clamp(R126f.w, 0.0, 1.0);
|
||||
PS0f = R126f.w;
|
||||
// 1
|
||||
PV1f.x = fract(PV0f.w);
|
||||
R127f.y = fract(PV0f.x);
|
||||
R127f.z = fract(PV0f.y);
|
||||
PV1f.w = fract(PV0f.z);
|
||||
R127f.w = intBitsToFloat(uf_remappedPS[1].x) * intBitsToFloat(0x3f7f0000);
|
||||
PS1f = R127f.w;
|
||||
// 2
|
||||
R127f.x = intBitsToFloat(uf_remappedPS[1].w) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.y = intBitsToFloat(uf_remappedPS[1].z) * intBitsToFloat(0x3f7f0000);
|
||||
PV0f.z = intBitsToFloat(uf_remappedPS[1].y) * intBitsToFloat(0x3f7f0000);
|
||||
R125f.w = PV1f.x * intBitsToFloat(0x3f808081);
|
||||
R126f.x = PV1f.w * intBitsToFloat(0x3f808081);
|
||||
PS0f = R126f.x;
|
||||
// 3
|
||||
backupReg0f = R127f.z;
|
||||
R125f.x = R127f.y * intBitsToFloat(0x3f808081);
|
||||
PV1f.y = fract(R127f.w);
|
||||
R127f.z = fract(PV0f.z);
|
||||
R127f.w = backupReg0f * intBitsToFloat(0x3f808081);
|
||||
R126f.z = fract(PV0f.y);
|
||||
PS1f = R126f.z;
|
||||
// 4
|
||||
PV0f.x = fract(R127f.x);
|
||||
R127f.y = R0f.z;
|
||||
R127f.y = clamp(R127f.y, 0.0, 1.0);
|
||||
R125f.z = R0f.y;
|
||||
R125f.z = clamp(R125f.z, 0.0, 1.0);
|
||||
R124f.w = R0f.w;
|
||||
R124f.w = clamp(R124f.w, 0.0, 1.0);
|
||||
R122f.x = (PV1f.y * intBitsToFloat(0x3f808081) + -(R125f.w));
|
||||
PS0f = R122f.x;
|
||||
// 5
|
||||
R123f.x = (PV0f.x * intBitsToFloat(0x3f808081) + -(R125f.x));
|
||||
PV1f.x = R123f.x;
|
||||
R123f.y = (R126f.z * intBitsToFloat(0x3f808081) + -(R127f.w));
|
||||
PV1f.y = R123f.y;
|
||||
R123f.z = (R127f.z * intBitsToFloat(0x3f808081) + -(R126f.x));
|
||||
PV1f.z = R123f.z;
|
||||
R0f.x = (mul_nonIEEE(PS0f,R126f.w) + R125f.w);
|
||||
R0f.x = clamp(R0f.x, 0.0, 1.0);
|
||||
PS1f = R0f.x;
|
||||
// 6
|
||||
R0f.y = (mul_nonIEEE(PV1f.z,R125f.z) + R126f.x);
|
||||
R0f.y = clamp(R0f.y, 0.0, 1.0);
|
||||
R0f.z = (mul_nonIEEE(PV1f.y,R127f.y) + R127f.w);
|
||||
R0f.z = clamp(R0f.z, 0.0, 1.0);
|
||||
R0f.w = (mul_nonIEEE(PV1f.x,R124f.w) + R125f.x);
|
||||
R0f.w = clamp(R0f.w, 0.0, 1.0);
|
||||
// export
|
||||
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, 0.0);
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
#version 450
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
// shader faace4c78d269ce1
|
||||
// Used for: Removing more text from HUD
|
||||
|
||||
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
#endif
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 1) in vec4 passParameterSem1;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
int clampFI32(int v)
|
||||
{
|
||||
if( v == 0x7FFFFFFF )
|
||||
return floatBitsToInt(1.0);
|
||||
else if( v == 0xFFFFFFFF )
|
||||
return floatBitsToInt(0.0);
|
||||
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||
}
|
||||
float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||
float PS0f = 0.0, PS1f = 0.0;
|
||||
vec4 tempf = vec4(0.0);
|
||||
float tempResultf;
|
||||
int tempResulti;
|
||||
ivec4 ARi = ivec4(0);
|
||||
bool predResult = true;
|
||||
vec3 cubeMapSTM;
|
||||
int cubeMapFaceId;
|
||||
R0f = passParameterSem0;
|
||||
R1f = passParameterSem1;
|
||||
R1f.w = (texture(textureUnitPS0, R1f.xy).w);
|
||||
// 0
|
||||
backupReg0f = R0f.x;
|
||||
backupReg1f = R0f.y;
|
||||
backupReg2f = R0f.z;
|
||||
backupReg3f = R0f.w;
|
||||
R0f.x = backupReg0f;
|
||||
R0f.x = clamp(R0f.x, 0.0, 1.0);
|
||||
R0f.y = backupReg1f;
|
||||
R0f.y = clamp(R0f.y, 0.0, 1.0);
|
||||
R0f.z = backupReg2f;
|
||||
R0f.z = clamp(R0f.z, 0.0, 1.0);
|
||||
R0f.w = mul_nonIEEE(backupReg3f, R1f.w);
|
||||
R0f.w = clamp(R0f.w, 0.0, 1.0);
|
||||
// export
|
||||
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, 0.0);
|
||||
}
|
7
src/TwilightPrincessHD/Mods/RemoveHUD/rules.txt
Normal file
7
src/TwilightPrincessHD/Mods/RemoveHUD/rules.txt
Normal file
@ -0,0 +1,7 @@
|
||||
[Definition]
|
||||
titleIds = 000500001019E500,000500001019E600,000500001019C800
|
||||
name = Remove HUD
|
||||
path = "The Legend of Zelda: Twilight Princess HD/Mods/Remove HUD (breaks menus)"
|
||||
description = Hides the HUD elements like the hearts, controller buttons and rupees count.|You should only enable this graphic pack when you want to make a screenshot without the HUD.
|
||||
#Credits: Crementif
|
||||
version = 6
|
@ -0,0 +1,9 @@
|
||||
[TwilightPrincessHD_RemoveHaze]
|
||||
moduleMatches = 0x1A03E108, 0xA3175EEA ; v81(EU/NA), v82(JP)
|
||||
;##exp and haze settings
|
||||
0x100C3EB8 = .float $nearExp ; Near world (over)exposure
|
||||
0x100C36C4 = .float $bloomExp ; Bloom npc/object (over) "
|
||||
0x100C3780 = .float $distExp ; Distant world (over)exposure
|
||||
;0x100C3774 = .float $distanceFog
|
||||
0x1012C898 = .float $distanceFog
|
||||
;0x100871C8 = .float 0.01 ;100871C8:.float 0.00050000002 ;cloud float
|
44
src/TwilightPrincessHD/Mods/RemoveHaze/rules.txt
Normal file
44
src/TwilightPrincessHD/Mods/RemoveHaze/rules.txt
Normal file
@ -0,0 +1,44 @@
|
||||
[Definition]
|
||||
titleIds = 000500001019C800,000500001019E600,000500001019E500
|
||||
name = Distant Fog
|
||||
path = "The Legend of Zelda: Twilight Princess HD/Mods/Distant Fog"
|
||||
description = Sets the depth and exposure of distant fog. Possible issues with disappearing objects.|Made by getdls.
|
||||
#Credits: getdls
|
||||
version = 6
|
||||
|
||||
[Default]
|
||||
$distanceFog = 21.0
|
||||
$nearExp = 0.0039
|
||||
$bloomExp = 0.0039
|
||||
$distExp = 0.0039
|
||||
|
||||
[Preset]
|
||||
name = Default
|
||||
|
||||
[Preset]
|
||||
name = Half-distant fog
|
||||
$distanceFog = 22.0
|
||||
$nearExp = 0.0039
|
||||
$bloomExp = 0.0039
|
||||
$distExp = 0.0039
|
||||
|
||||
[Preset]
|
||||
name = No distant fog
|
||||
$distanceFog = 60.0
|
||||
$nearExp = 0.0039
|
||||
$bloomExp = 0.0039
|
||||
$distExp = 0.0039
|
||||
|
||||
[Preset]
|
||||
name = Low exposure
|
||||
$distanceFog = 21.0
|
||||
$nearExp = 0.00375
|
||||
$bloomExp = 0.00375
|
||||
$distExp = 0.00375
|
||||
|
||||
[Preset]
|
||||
name = Lowest exposure
|
||||
$distanceFog = 22.0
|
||||
$nearExp = 0.003
|
||||
$bloomExp = 0.00325
|
||||
$distExp = 0.00325
|
Loading…
x
Reference in New Issue
Block a user