mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2024-11-23 01:59:18 +01:00
[BotW] Added Glow Lights Color Mod
This commit is contained in:
parent
775c1bebb6
commit
0ccc0c9c0e
@ -0,0 +1,177 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 0453fb7ad9cc0f79
|
||||||
|
// Bomb - explosion sphere
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[1];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21106000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fc9000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x21412000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 5) in vec4 passParameterSem9;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R5f = passParameterSem9;
|
||||||
|
R6f.xy = (texture(textureUnitPS0, R4f.xy).xy);
|
||||||
|
R4f.xy = (texture(textureUnitPS0, R4f.zw).xy);
|
||||||
|
// 0
|
||||||
|
PV0f.x = R6f.y + R4f.y;
|
||||||
|
R6f.y = -(R1f.w) + 1.0;
|
||||||
|
PV0f.z = R6f.x + R4f.x;
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
PV1f.x = PV0f.z + -(1.0);
|
||||||
|
R127f.y = PV0f.x + -(1.0);
|
||||||
|
PV1f.w = R2f.z * PS0f;
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R2f.x;
|
||||||
|
backupReg1f = R2f.y;
|
||||||
|
R2f.x = mul_nonIEEE(backupReg0f, PS1f);
|
||||||
|
R2f.y = mul_nonIEEE(backupReg1f, PS1f);
|
||||||
|
R123f.z = (mul_nonIEEE(PV1f.w,intBitsToFloat(uf_remappedPS[0].w)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R2f.w = R0f.w + PV1f.x;
|
||||||
|
PS0f = mul_nonIEEE(R3f.y, PV1f.x);
|
||||||
|
// 3
|
||||||
|
R4f.x = R5f.x + PS0f;
|
||||||
|
PV1f.z = mul_nonIEEE(R3f.y, R127f.y);
|
||||||
|
PS1f = 1.0 / PV0f.z;
|
||||||
|
// 4
|
||||||
|
R5f.x = -(intBitsToFloat(uf_remappedPS[0].z)) * PS1f;
|
||||||
|
R4f.y = R5f.y + PV1f.z;
|
||||||
|
R4f.w = (texture(textureUnitPS4, R2f.xy).x);
|
||||||
|
R2f.z = (texture(textureUnitPS1, R2f.ww).x);
|
||||||
|
R4f.y = (texture(textureUnitPS2, R4f.xy).w);
|
||||||
|
// 0
|
||||||
|
R127f.x = (0.5 * R2f.z + 0.5);
|
||||||
|
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R4f.w) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
// 1
|
||||||
|
PV1f.y = -(R5f.x) + PV0f.w;
|
||||||
|
// 2
|
||||||
|
R123f.z = (PV1f.y * intBitsToFloat(0x40555554) + intBitsToFloat(0xbeaaaaaa));
|
||||||
|
R123f.z = clamp(R123f.z, 0.0, 1.0);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
// 3
|
||||||
|
PV1f.w = -(PV0f.z) + 1.0;
|
||||||
|
PV1f.w = clamp(PV1f.w, 0.0, 1.0);
|
||||||
|
// 4
|
||||||
|
PV0f.z = PV1f.w + R127f.x;
|
||||||
|
// 5
|
||||||
|
R127f.x = mul_nonIEEE(R0f.y, PV0f.z);
|
||||||
|
PV1f.x = R127f.x;
|
||||||
|
R127f.y = mul_nonIEEE(R0f.x, PV0f.z);
|
||||||
|
PV1f.y = R127f.y;
|
||||||
|
R127f.z = mul_nonIEEE(R0f.z, PV0f.z);
|
||||||
|
PV1f.z = R127f.z;
|
||||||
|
R127f.w = PV0f.z + R4f.y;
|
||||||
|
R127f.w /= 2.0;
|
||||||
|
PV1f.w = R127f.w;
|
||||||
|
// 6
|
||||||
|
PV0f.x = PV1f.y * intBitsToFloat(0x41200000);
|
||||||
|
PV0f.y = PV1f.x * intBitsToFloat(0x41200000);
|
||||||
|
PV0f.z = PV1f.w + intBitsToFloat(0xbf333333);
|
||||||
|
PV0f.z = clamp(PV0f.z, 0.0, 1.0);
|
||||||
|
PV0f.w = PV1f.z * intBitsToFloat(0x41200000);
|
||||||
|
// 7
|
||||||
|
backupReg0f = R127f.z;
|
||||||
|
R123f.x = (mul_nonIEEE(PV0f.y,PV0f.z) + R127f.x);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(PV0f.x,PV0f.z) + R127f.y);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
R127f.z = (mul_nonIEEE(R4f.y,R127f.w) + PV0f.z);
|
||||||
|
PV1f.z = R127f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(PV0f.w,PV0f.z) + backupReg0f);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
// 8
|
||||||
|
R123f.x = (PV1f.y * intBitsToFloat(0x41f00000) + -(R1f.x));
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(R6f.y,PV1f.z) + R1f.w);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
R123f.z = (PV1f.x * intBitsToFloat(0x41f00000) + -(R1f.y));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (PV1f.w * intBitsToFloat(0x41f00000) + -(R1f.z));
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
// 9
|
||||||
|
backupReg0f = R1f.y;
|
||||||
|
backupReg1f = R1f.z;
|
||||||
|
backupReg2f = R1f.x;
|
||||||
|
PV1f.x = mul_nonIEEE(R1f.w, PV0f.y);
|
||||||
|
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
|
||||||
|
R1f.y = (mul_nonIEEE(PV0f.z,R127f.z) + backupReg0f);
|
||||||
|
R1f.z = (mul_nonIEEE(PV0f.w,R127f.z) + backupReg1f);
|
||||||
|
R1f.x = (mul_nonIEEE(PV0f.x,R127f.z) + backupReg2f);
|
||||||
|
PS1f = R1f.x;
|
||||||
|
// 10
|
||||||
|
R1f.w = mul_nonIEEE(R3f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R1f.x, R1f.y, R1f.z, R1f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,111 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 097eac672c26b4a4
|
||||||
|
// Shrine - ending field shatter particles 2
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[1];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x210c8000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 9) uniform sampler2D textureUnitPS9;// Tex9 addr 0xf557c800 res 160x90x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler9 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R4f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
backupReg1f = R0f.z;
|
||||||
|
PV0f.x = R0f.y + -(R1f.y);
|
||||||
|
R0f.y = mul_nonIEEE(R0f.w, R4f.w);
|
||||||
|
R0f.y = clamp(R0f.y, 0.0, 1.0);
|
||||||
|
PV0f.z = backupReg0f + -(R1f.x);
|
||||||
|
PV0f.w = backupReg1f + -(R1f.z);
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
backupReg0f = R1f.y;
|
||||||
|
backupReg1f = R1f.x;
|
||||||
|
backupReg2f = R1f.z;
|
||||||
|
R1f.x = mul_nonIEEE(R2f.x, PS0f);
|
||||||
|
R1f.y = mul_nonIEEE(R2f.y, PS0f);
|
||||||
|
R1f.z = (mul_nonIEEE(PV0f.x,R4f.y) + backupReg0f);
|
||||||
|
R2f.w = (mul_nonIEEE(PV0f.z,R4f.x) + backupReg1f);
|
||||||
|
R2f.x = (mul_nonIEEE(PV0f.w,R4f.z) + backupReg2f);
|
||||||
|
PS1f = R2f.x;
|
||||||
|
R1f.x = (texture(textureUnitPS9, R1f.xy).x);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
PV0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), intBitsToFloat(uf_remappedPS[0].w));
|
||||||
|
PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), intBitsToFloat(uf_remappedPS[0].w));
|
||||||
|
PV0f.z = R1f.x;
|
||||||
|
PV0f.z /= 2.0;
|
||||||
|
PV0f.z = clamp(PV0f.z, 0.0, 1.0);
|
||||||
|
PV0f.w = mul_nonIEEE(R3f.x, backupReg0f);
|
||||||
|
PS0f = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), intBitsToFloat(uf_remappedPS[0].w));
|
||||||
|
// 1
|
||||||
|
R1f.x = mul_nonIEEE(R2f.w, PV0f.y);
|
||||||
|
R1f.y = mul_nonIEEE(R1f.z, PV0f.x);
|
||||||
|
R1f.z = mul_nonIEEE(R2f.x, PS0f);
|
||||||
|
R1f.w = mul_nonIEEE(PV0f.w, PV0f.z);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R1f.x, R1f.y, R1f.z, R1f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,140 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 0ce5fca5c70640d1
|
||||||
|
// Electric arc
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fc2000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x210c1000 res 64x256x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 0 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x210c8000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 5) in vec4 passParameterSem9;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R5f = passParameterSem9;
|
||||||
|
R6f.xw = (texture(textureUnitPS0, R4f.xy).xw);
|
||||||
|
R5f.xyzw = (texture(textureUnitPS2, R5f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R3f.y, intBitsToFloat(uf_remappedPS[0].y));
|
||||||
|
PV0f.y = mul_nonIEEE(R3f.y, intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
R123f.z = (R6f.w * 2.0 + -(1.0));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (R6f.x * 2.0 + -(1.0));
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
R4f.x = (mul_nonIEEE(PV0f.y,PV0f.w) + R4f.z);
|
||||||
|
R4f.y = (mul_nonIEEE(PV0f.x,PV0f.z) + R4f.w);
|
||||||
|
R4f.z = mul_nonIEEE(R2f.x, PS0f);
|
||||||
|
R4f.w = mul_nonIEEE(R2f.y, PS0f);
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
R6f.x = R0f.x + -(R1f.x);
|
||||||
|
R2f.y = R2f.z * PS1f;
|
||||||
|
R2f.z = R0f.y + -(R1f.y);
|
||||||
|
R2f.w = R0f.z + -(R1f.z);
|
||||||
|
R3f.z = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS0f = R3f.z;
|
||||||
|
R2f.x = (texture(textureUnitPS4, R4f.zw).x);
|
||||||
|
R4f.xyzw = (texture(textureUnitPS1, R4f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R4f.w, R5f.w);
|
||||||
|
R127f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R2f.x) + intBitsToFloat(uf_remappedPS[2].x));
|
||||||
|
R123f.z = (mul_nonIEEE(R2f.y,intBitsToFloat(uf_remappedPS[2].w)) + -(intBitsToFloat(uf_remappedPS[2].y)));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
PV0f.w = mul_nonIEEE(R4f.x, R4f.x);
|
||||||
|
PS0f = mul_nonIEEE(R4f.y, R4f.y);
|
||||||
|
// 1
|
||||||
|
PV1f.x = mul_nonIEEE(R4f.z, R4f.z);
|
||||||
|
PV1f.y = mul_nonIEEE(PV0f.w, R5f.x);
|
||||||
|
PV1f.z = mul_nonIEEE(R0f.w, PV0f.x);
|
||||||
|
R127f.w = mul_nonIEEE(PS0f, R5f.y);
|
||||||
|
PS1f = 1.0 / PV0f.z;
|
||||||
|
// 2
|
||||||
|
R127f.x = mul_nonIEEE(R1f.w, PV1f.z);
|
||||||
|
R127f.x = clamp(R127f.x, 0.0, 1.0);
|
||||||
|
PV0f.y = -(intBitsToFloat(uf_remappedPS[2].z)) * PS1f;
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.x, R5f.z);
|
||||||
|
R5f.x = (mul_nonIEEE(R6f.x,PV1f.y) + R1f.x);
|
||||||
|
PS0f = R5f.x;
|
||||||
|
// 3
|
||||||
|
R5f.y = (mul_nonIEEE(R2f.z,R127f.w) + R1f.y);
|
||||||
|
R5f.z = (mul_nonIEEE(R2f.w,PV0f.w) + R1f.z);
|
||||||
|
PV1f.w = -(PV0f.y) + R127f.y;
|
||||||
|
// 4
|
||||||
|
PV0f.y = PV1f.w * R3f.z;
|
||||||
|
PV0f.y = clamp(PV0f.y, 0.0, 1.0);
|
||||||
|
// 5
|
||||||
|
PV1f.x = mul_nonIEEE(R127f.x, PV0f.y);
|
||||||
|
// 6
|
||||||
|
R5f.w = mul_nonIEEE(R3f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R5f.x, R5f.y, R5f.z, R5f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,113 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 12fe44a2273b452c
|
||||||
|
// Shrine - elevator pass through field
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem3;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem7;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem3;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem7;
|
||||||
|
// 0
|
||||||
|
PV0f.x = R3f.w * 1.0;
|
||||||
|
R4f.y = mul_nonIEEE(R0f.y, R3f.y);
|
||||||
|
R4f.z = mul_nonIEEE(R0f.z, R3f.z);
|
||||||
|
PS0f = 1.0 / R1f.w;
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
R0f.x = mul_nonIEEE(R1f.x, PS0f);
|
||||||
|
R0f.y = R1f.z * PS0f;
|
||||||
|
R0f.z = mul_nonIEEE(R1f.y, PS0f);
|
||||||
|
R1f.w = mul_nonIEEE(R0f.w, PV0f.x);
|
||||||
|
R1f.w = clamp(R1f.w, 0.0, 1.0);
|
||||||
|
R4f.x = mul_nonIEEE(backupReg0f, R3f.x);
|
||||||
|
PS1f = R4f.x;
|
||||||
|
R0f.w = (texture(textureUnitPS4, R0f.xz).x);
|
||||||
|
// 0
|
||||||
|
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.y) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
R127f.z = (mul_nonIEEE(R0f.w,intBitsToFloat(uf_remappedPS[0].w)) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
// 1
|
||||||
|
PS1f = 1.0 / PV0f.x;
|
||||||
|
// 2
|
||||||
|
PV0f.z = -(intBitsToFloat(uf_remappedPS[0].z)) * PS1f;
|
||||||
|
// 3
|
||||||
|
PV1f.y = R127f.z + -(PV0f.z);
|
||||||
|
// 4
|
||||||
|
PV0f.x = max(PV1f.y, -(PV1f.y));
|
||||||
|
// 5
|
||||||
|
PV1f.w = PV0f.x + -(intBitsToFloat(uf_remappedPS[1].x));
|
||||||
|
// 6
|
||||||
|
R123f.z = intBitsToFloat(((PV1f.w >= 0.0)?(floatBitsToInt(1.0)):(0)));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
// 7
|
||||||
|
PV1f.y = -(PV0f.z) + 1.0;
|
||||||
|
// 8
|
||||||
|
PV0f.x = mul_nonIEEE(R1f.w, PV1f.y);
|
||||||
|
// 9
|
||||||
|
R4f.w = mul_nonIEEE(R2f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R4f.x, R4f.y, R4f.z, R4f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,145 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 146164991e2929e2
|
||||||
|
// Shrine - volumetric light
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21331000 res 512x512x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 9) uniform sampler2D textureUnitPS9;// Tex9 addr 0xf557c800 res 160x90x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler9 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem7;
|
||||||
|
layout(location = 5) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem7;
|
||||||
|
R5f = passParameterSem8;
|
||||||
|
R5f.xyzw = (texture(textureUnitPS0, R5f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
R127f.x = R0f.y + -(R1f.y);
|
||||||
|
PV0f.y = mul_nonIEEE(R4f.w, R5f.w);
|
||||||
|
R3f.z = R0f.z + -(R1f.z);
|
||||||
|
PV0f.w = R0f.x + -(R1f.x);
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
R0f.x = mul_nonIEEE(R2f.x, PS0f);
|
||||||
|
R0f.y = mul_nonIEEE(R2f.y, PS0f);
|
||||||
|
R0f.z = mul_nonIEEE(R0f.w, PV0f.y);
|
||||||
|
R0f.z = clamp(R0f.z, 0.0, 1.0);
|
||||||
|
R123f.w = (mul_nonIEEE(PV0f.w,R5f.x) + R1f.x);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R2f.z;
|
||||||
|
R2f.x = (mul_nonIEEE(R127f.x,R5f.y) + R1f.y);
|
||||||
|
R2f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), intBitsToFloat(uf_remappedPS[0].w));
|
||||||
|
R2f.z = mul_nonIEEE(R4f.x, PV1f.w);
|
||||||
|
R2f.w = backupReg0f * PS1f;
|
||||||
|
R6f.x = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS0f = R6f.x;
|
||||||
|
R0f.w = (texture(textureUnitPS4, R0f.xy).x);
|
||||||
|
R0f.x = (texture(textureUnitPS9, R0f.xy).x);
|
||||||
|
// 0
|
||||||
|
R123f.x = (mul_nonIEEE(R3f.z,R5f.z) + R1f.z);
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(R2f.w,intBitsToFloat(uf_remappedPS[2].w)) + -(intBitsToFloat(uf_remappedPS[2].y)));
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
R127f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.w) + intBitsToFloat(uf_remappedPS[2].x));
|
||||||
|
R127f.w = mul_nonIEEE(R4f.y, R2f.x);
|
||||||
|
R126f.z = R0f.x;
|
||||||
|
R126f.z /= 2.0;
|
||||||
|
R126f.z = clamp(R126f.z, 0.0, 1.0);
|
||||||
|
PS0f = R126f.z;
|
||||||
|
// 1
|
||||||
|
PV1f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), intBitsToFloat(uf_remappedPS[0].w));
|
||||||
|
PV1f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), intBitsToFloat(uf_remappedPS[0].w));
|
||||||
|
PV1f.w = mul_nonIEEE(R4f.z, PV0f.x);
|
||||||
|
PS1f = 1.0 / PV0f.y;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R2f.y;
|
||||||
|
backupReg1f = R2f.z;
|
||||||
|
PV0f.x = -(intBitsToFloat(uf_remappedPS[2].z)) * PS1f;
|
||||||
|
R2f.y = mul_nonIEEE(R127f.w, PV1f.x);
|
||||||
|
R2f.z = mul_nonIEEE(PV1f.w, backupReg0f);
|
||||||
|
R2f.x = mul_nonIEEE(backupReg1f, PV1f.y);
|
||||||
|
PS0f = R2f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.y = -(PV0f.x) + R127f.z;
|
||||||
|
// 4
|
||||||
|
PV0f.w = PV1f.y * R6f.x;
|
||||||
|
PV0f.w = clamp(PV0f.w, 0.0, 1.0);
|
||||||
|
// 5
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
PV1f.z = mul_nonIEEE(backupReg0f, PV0f.w);
|
||||||
|
// 6
|
||||||
|
PV0f.y = mul_nonIEEE(R3f.x, PV1f.z);
|
||||||
|
// 7
|
||||||
|
R2f.w = mul_nonIEEE(PV0f.y, R126f.z);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R2f.x, R2f.y, R2f.z, R2f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,94 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 14f5a7cf99f2904a
|
||||||
|
// Shrine - laser beam
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x18b20000 res 128x4x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x18b20000 res 128x4x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 0 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem7;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem7;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R2f.w = (texture(textureUnitPS0, R4f.xy).w);
|
||||||
|
R4f.z = (texture(textureUnitPS1, R4f.zw).w);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R3f.x;
|
||||||
|
backupReg1f = R3f.y;
|
||||||
|
backupReg2f = R0f.z;
|
||||||
|
backupReg3f = R3f.z;
|
||||||
|
R3f.x = mul_nonIEEE(R0f.x, backupReg0f);
|
||||||
|
R3f.y = mul_nonIEEE(R0f.y, backupReg1f);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.w, R4f.z);
|
||||||
|
R3f.z = mul_nonIEEE(backupReg2f, backupReg3f);
|
||||||
|
PS0f = R3f.z;
|
||||||
|
// 1
|
||||||
|
PV1f.y = mul_nonIEEE(R0f.w, PV0f.z);
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(R1f.w, PV1f.y);
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
// 3
|
||||||
|
R3f.w = mul_nonIEEE(R2f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R3f.x, R3f.y, R3f.z, R3f.w)).a >= uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,147 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 15e2d4f74a5e8445
|
||||||
|
// Bomb - explosion first sphere
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[1];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fd4000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem2;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem7;
|
||||||
|
layout(location = 5) in vec4 passParameterSem8;
|
||||||
|
layout(location = 6) in vec4 passParameterSem11;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem2;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem7;
|
||||||
|
R5f = passParameterSem8;
|
||||||
|
R6f = passParameterSem11;
|
||||||
|
R5f.xyzw = (texture(textureUnitPS0, R5f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,-0.0),vec4(R2f.x,R2f.y,R2f.z,0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
R127f.z = -(intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[0].w);
|
||||||
|
PS0f = R127f.z;
|
||||||
|
// 1
|
||||||
|
R127f.x = mul_nonIEEE(R5f.x, R5f.x);
|
||||||
|
PV1f.y = mul_nonIEEE(R4f.w, R5f.w);
|
||||||
|
R126f.z = mul_nonIEEE(R5f.y, R5f.y);
|
||||||
|
R127f.w = mul_nonIEEE(R5f.z, R5f.z);
|
||||||
|
tempResultf = 1.0 / sqrt(PV0f.x);
|
||||||
|
PS1f = tempResultf;
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(R2f.x, PS1f);
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, PS1f);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, PS1f);
|
||||||
|
R126f.w = mul_nonIEEE(R0f.w, PV1f.y);
|
||||||
|
R126f.w = clamp(R126f.w, 0.0, 1.0);
|
||||||
|
R127f.y = 1.0 / R127f.z;
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
tempf.x = dot(vec4(R6f.x,R6f.y,R6f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
PS1f = backupReg0f + -(R1f.x);
|
||||||
|
// 4
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
backupReg1f = R0f.z;
|
||||||
|
PV0f.x = max(PV1f.x, -(PV1f.x));
|
||||||
|
PV0f.y = backupReg0f + -(R1f.y);
|
||||||
|
PV0f.z = backupReg1f + -(R1f.z);
|
||||||
|
R123f.w = (mul_nonIEEE(PS1f,R127f.x) + R1f.x);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
// 5
|
||||||
|
R123f.x = (mul_nonIEEE(PV0f.z,R127f.w) + R1f.z);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.z = (mul_nonIEEE(PV0f.y,R126f.z) + R1f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = PV0f.x + -(intBitsToFloat(uf_remappedPS[0].z));
|
||||||
|
R1f.x = mul_nonIEEE(R4f.x, PV0f.w);
|
||||||
|
PS1f = R1f.x;
|
||||||
|
// 6
|
||||||
|
PV0f.x = PV1f.w * R127f.y;
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
R1f.y = mul_nonIEEE(R4f.y, PV1f.z);
|
||||||
|
R1f.z = mul_nonIEEE(R4f.z, PV1f.x);
|
||||||
|
// 7
|
||||||
|
R123f.z = (intBitsToFloat(0xc0000000) * PV0f.x + intBitsToFloat(0x40400000));
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
// 8
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.w, PV1f.z);
|
||||||
|
// 9
|
||||||
|
PV1f.x = mul_nonIEEE(R126f.w, PV0f.y);
|
||||||
|
// 10
|
||||||
|
R1f.w = mul_nonIEEE(R3f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R1f.x, R1f.y, R1f.z, R1f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,219 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 1dd8be9054c94f4e
|
||||||
|
// Shrine - activation circle
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[4];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21106000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fc9000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x1dc46000 res 64x64x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem2;
|
||||||
|
layout(location = 3) in vec4 passParameterSem3;
|
||||||
|
layout(location = 4) in vec4 passParameterSem4;
|
||||||
|
layout(location = 5) in vec4 passParameterSem5;
|
||||||
|
layout(location = 6) in vec4 passParameterSem8;
|
||||||
|
layout(location = 7) in vec4 passParameterSem9;
|
||||||
|
layout(location = 8) in vec4 passParameterSem11;
|
||||||
|
layout(location = 9) in vec4 passParameterSem12;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R10f = vec4(0.0);
|
||||||
|
vec4 R122f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R125f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem2;
|
||||||
|
R3f = passParameterSem3;
|
||||||
|
R4f = passParameterSem4;
|
||||||
|
R5f = passParameterSem5;
|
||||||
|
R6f = passParameterSem8;
|
||||||
|
R7f = passParameterSem9;
|
||||||
|
R8f = passParameterSem11;
|
||||||
|
R9f = passParameterSem12;
|
||||||
|
R10f.xy = (texture(textureUnitPS0, R6f.xy).xy);
|
||||||
|
R6f.xy = (texture(textureUnitPS0, R6f.zw).xy);
|
||||||
|
// 0
|
||||||
|
R127f.x = -(R5f.y) + R5f.z;
|
||||||
|
PV0f.y = R10f.y + R6f.y;
|
||||||
|
PV0f.z = R10f.x + R6f.x;
|
||||||
|
R2f.w = 1.0;
|
||||||
|
PS0f = 1.0 / R3f.w;
|
||||||
|
// 1
|
||||||
|
PV1f.x = PV0f.z + -(1.0);
|
||||||
|
R6f.y = mul_nonIEEE(R3f.y, PS0f);
|
||||||
|
PV1f.z = PV0f.y + -(1.0);
|
||||||
|
R6f.w = mul_nonIEEE(R3f.x, PS0f);
|
||||||
|
PS1f = 1.0 / R3f.w;
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(R4f.y, PV1f.x);
|
||||||
|
R3f.y = R0f.w + PV1f.x;
|
||||||
|
PV0f.z = R3f.z * PS1f;
|
||||||
|
PV0f.w = mul_nonIEEE(R4f.y, PV1f.z);
|
||||||
|
R4f.z = -(intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[0].w);
|
||||||
|
PS0f = R4f.z;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R7f.x;
|
||||||
|
backupReg1f = R7f.y;
|
||||||
|
R7f.x = backupReg0f + PV0f.x;
|
||||||
|
R7f.y = backupReg1f + PV0f.w;
|
||||||
|
R3f.z = (mul_nonIEEE(PV0f.z,intBitsToFloat(uf_remappedPS[1].w)) + -(intBitsToFloat(uf_remappedPS[1].y)));
|
||||||
|
R4f.w = R0f.y + -(R1f.y);
|
||||||
|
R3f.w = 1.0 / R127f.x;
|
||||||
|
PS1f = R3f.w;
|
||||||
|
R6f.z = (texture(textureUnitPS2, R7f.xy).w);
|
||||||
|
R5f.w = (texture(textureUnitPS1, R3f.yy).x);
|
||||||
|
R6f.y = (texture(textureUnitPS4, R6f.wy).x);
|
||||||
|
// 0
|
||||||
|
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,-0.0),vec4(R2f.x,R2f.y,R2f.z,0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
R127f.z = R5f.w + R6f.z;
|
||||||
|
R127f.z /= 2.0;
|
||||||
|
PS0f = R127f.z;
|
||||||
|
// 1
|
||||||
|
tempf.x = dot(vec4(R9f.x,R9f.y,R9f.z,R2f.w),vec4(intBitsToFloat(uf_remappedPS[2].x),intBitsToFloat(uf_remappedPS[2].y),intBitsToFloat(uf_remappedPS[2].z),intBitsToFloat(uf_remappedPS[2].w)));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
R126f.z = tempf.x;
|
||||||
|
tempResultf = 1.0 / sqrt(PV0f.x);
|
||||||
|
PS1f = tempResultf;
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(R2f.x, PS1f);
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, PS1f);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, PS1f);
|
||||||
|
R125f.w = R127f.z + intBitsToFloat(0xbf333333);
|
||||||
|
R125f.w = clamp(R125f.w, 0.0, 1.0);
|
||||||
|
PV0f.w = R125f.w;
|
||||||
|
R127f.y = 1.0 / R3f.z;
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 3
|
||||||
|
tempf.x = dot(vec4(R8f.x,R8f.y,R8f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
R122f.x = (mul_nonIEEE(R6f.z,R127f.z) + PV0f.w);
|
||||||
|
PS1f = R122f.x;
|
||||||
|
// 4
|
||||||
|
R127f.x = max(PV1f.x, -(PV1f.x));
|
||||||
|
PV0f.y = -(R5f.y) + -(R126f.z);
|
||||||
|
R126f.z = mul_nonIEEE(R1f.w, PS1f);
|
||||||
|
R126f.z = clamp(R126f.z, 0.0, 1.0);
|
||||||
|
R127f.w = -(intBitsToFloat(uf_remappedPS[1].z)) * R127f.y;
|
||||||
|
R127f.y = 1.0 / R4f.z;
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 5
|
||||||
|
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R6f.y) + intBitsToFloat(uf_remappedPS[1].x));
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R126f.y = R0f.z + -(R1f.z);
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.y, R3f.w);
|
||||||
|
PV1f.z = clamp(PV1f.z, 0.0, 1.0);
|
||||||
|
PV1f.w = R0f.x + -(R1f.x);
|
||||||
|
R126f.w = (mul_nonIEEE(R4f.w,R5f.w) + R1f.y);
|
||||||
|
PS1f = R126f.w;
|
||||||
|
// 6
|
||||||
|
PV0f.x = -(R127f.w) + PV1f.x;
|
||||||
|
R125f.y = mul_nonIEEE(R126f.z, PV1f.z);
|
||||||
|
R125f.y = clamp(R125f.y, 0.0, 1.0);
|
||||||
|
R126f.z = (mul_nonIEEE(PV1f.w,R5f.w) + R1f.x);
|
||||||
|
PV0f.z = R126f.z;
|
||||||
|
PV0f.w = R127f.x + -(intBitsToFloat(uf_remappedPS[0].z));
|
||||||
|
PS0f = 1.0 / intBitsToFloat(uf_remappedPS[3].y);
|
||||||
|
// 7
|
||||||
|
PV1f.x = PV0f.w * R127f.y;
|
||||||
|
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
|
||||||
|
PV1f.y = PV0f.x * PS0f;
|
||||||
|
PV1f.y = clamp(PV1f.y, 0.0, 1.0);
|
||||||
|
R127f.z = (mul_nonIEEE(R126f.y,R5f.w) + R1f.z);
|
||||||
|
PV1f.z = R127f.z;
|
||||||
|
PV1f.w = PV0f.z * intBitsToFloat(0x41200000);
|
||||||
|
R127f.y = R126f.w * intBitsToFloat(0x41200000);
|
||||||
|
PS1f = R127f.y;
|
||||||
|
// 8
|
||||||
|
R127f.x = mul_nonIEEE(R125f.y, PV1f.y);
|
||||||
|
PV0f.y = PV1f.z * intBitsToFloat(0x41200000);
|
||||||
|
R123f.z = (intBitsToFloat(0xc0000000) * PV1f.x + intBitsToFloat(0x40400000));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.x, PV1f.x);
|
||||||
|
R1f.x = (mul_nonIEEE(PV1f.w,R125f.w) + R126f.z);
|
||||||
|
PS0f = R1f.x;
|
||||||
|
// 9
|
||||||
|
PV1f.y = mul_nonIEEE(PV0f.w, PV0f.z);
|
||||||
|
R1f.z = (mul_nonIEEE(PV0f.y,R125f.w) + R127f.z);
|
||||||
|
R1f.y = (mul_nonIEEE(R127f.y,R125f.w) + R126f.w);
|
||||||
|
PS1f = R1f.y;
|
||||||
|
// 10
|
||||||
|
PV0f.x = mul_nonIEEE(R127f.x, PV1f.y);
|
||||||
|
// 11
|
||||||
|
R1f.w = mul_nonIEEE(R4f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R1f.x, R1f.y, R1f.z, R1f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,116 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 233a000439032e75
|
||||||
|
// Bomb - explosion circle
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x214e1000 res 64x400x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x214e1000 res 64x400x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 0 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem7;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R122f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem7;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R5f.xyzw = (texture(textureUnitPS0, R4f.xy).xyzw);
|
||||||
|
R4f.xyzw = (texture(textureUnitPS1, R4f.zw).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = R5f.w + R4f.w;
|
||||||
|
PV0f.y = mul_nonIEEE(R5f.x, R5f.x);
|
||||||
|
R127f.z = mul_nonIEEE(R5f.y, R5f.y);
|
||||||
|
R127f.w = mul_nonIEEE(R5f.z, R5f.z);
|
||||||
|
PS0f = mul_nonIEEE(R4f.x, R4f.x);
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV1f.x = mul_nonIEEE(R4f.z, R4f.z);
|
||||||
|
PV1f.y = mul_nonIEEE(R4f.y, R4f.y);
|
||||||
|
R126f.z = (mul_nonIEEE(R3f.w,PV0f.x) + -(R0f.w));
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.y, PS0f);
|
||||||
|
PS1f = backupReg0f + -(R1f.x);
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
PV0f.x = R0f.y + -(R1f.y);
|
||||||
|
PV0f.y = mul_nonIEEE(R127f.w, PV1f.x);
|
||||||
|
PV0f.z = mul_nonIEEE(R127f.z, PV1f.y);
|
||||||
|
PV0f.w = backupReg0f + -(R1f.z);
|
||||||
|
R122f.x = (mul_nonIEEE(PS1f,PV1f.w) + R1f.x);
|
||||||
|
PS0f = R122f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.x = mul_nonIEEE(R1f.w, R126f.z);
|
||||||
|
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
|
||||||
|
R123f.z = (mul_nonIEEE(PV0f.w,PV0f.y) + R1f.z);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(PV0f.x,PV0f.z) + R1f.y);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
R1f.x = mul_nonIEEE(R3f.x, PS0f);
|
||||||
|
PS1f = R1f.x;
|
||||||
|
// 4
|
||||||
|
R1f.y = mul_nonIEEE(R3f.y, PV1f.w);
|
||||||
|
R1f.z = mul_nonIEEE(R3f.z, PV1f.z);
|
||||||
|
R1f.w = mul_nonIEEE(R2f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R1f.x, R1f.y, R1f.z, R1f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,196 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 266a0d760fe1ddfc
|
||||||
|
// Shrine - elevator base
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[4];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21106000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x21156000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x21103000 res 4x64x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem2;
|
||||||
|
layout(location = 3) in vec4 passParameterSem3;
|
||||||
|
layout(location = 4) in vec4 passParameterSem4;
|
||||||
|
layout(location = 5) in vec4 passParameterSem7;
|
||||||
|
layout(location = 6) in vec4 passParameterSem8;
|
||||||
|
layout(location = 7) in vec4 passParameterSem9;
|
||||||
|
layout(location = 8) in vec4 passParameterSem11;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem2;
|
||||||
|
R3f = passParameterSem3;
|
||||||
|
R4f = passParameterSem4;
|
||||||
|
R5f = passParameterSem7;
|
||||||
|
R6f = passParameterSem8;
|
||||||
|
R7f = passParameterSem9;
|
||||||
|
R8f = passParameterSem11;
|
||||||
|
R9f.xw = (texture(textureUnitPS0, R6f.xy).xw);
|
||||||
|
R7f.xyzw = (texture(textureUnitPS2, R7f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
R123f.x = (R9f.w * 2.0 + -(1.0));
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R4f.y, intBitsToFloat(uf_remappedPS[0].y));
|
||||||
|
PV0f.z = mul_nonIEEE(R4f.y, intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
R123f.w = (R9f.x * 2.0 + -(1.0));
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
PS0f = 1.0 / R3f.w;
|
||||||
|
// 1
|
||||||
|
R6f.x = (mul_nonIEEE(PV0f.z,PV0f.w) + R6f.z);
|
||||||
|
R6f.y = (mul_nonIEEE(PV0f.y,PV0f.x) + R6f.w);
|
||||||
|
R6f.z = mul_nonIEEE(R3f.x, PS0f);
|
||||||
|
R6f.w = mul_nonIEEE(R3f.y, PS0f);
|
||||||
|
PS1f = 1.0 / R3f.w;
|
||||||
|
// 2
|
||||||
|
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,-0.0),vec4(R2f.x,R2f.y,R2f.z,0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
PS0f = R3f.z * PS1f;
|
||||||
|
// 3
|
||||||
|
R9f.x = mul_nonIEEE(R7f.x, R7f.x);
|
||||||
|
R3f.y = mul_nonIEEE(R7f.y, R7f.y);
|
||||||
|
R4f.z = (mul_nonIEEE(PS0f,intBitsToFloat(uf_remappedPS[1].w)) + -(intBitsToFloat(uf_remappedPS[1].y)));
|
||||||
|
R3f.w = mul_nonIEEE(R7f.z, R7f.z);
|
||||||
|
tempResultf = 1.0 / sqrt(PV0f.x);
|
||||||
|
R3f.z = tempResultf;
|
||||||
|
PS1f = R3f.z;
|
||||||
|
R3f.x = (texture(textureUnitPS4, R6f.zw).x);
|
||||||
|
R6f.xyzw = (texture(textureUnitPS1, R6f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R2f.x, R3f.z);
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, R3f.z);
|
||||||
|
R127f.w = -(intBitsToFloat(uf_remappedPS[2].z)) + intBitsToFloat(uf_remappedPS[2].w);
|
||||||
|
R127f.y = 1.0 / R4f.z;
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 1
|
||||||
|
tempf.x = dot(vec4(R8f.x,R8f.y,R8f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
PS1f = mul_nonIEEE(R6f.w, R7f.w);
|
||||||
|
// 2
|
||||||
|
PV0f.x = max(PV1f.x, -(PV1f.x));
|
||||||
|
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R3f.x) + intBitsToFloat(uf_remappedPS[1].x));
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(R5f.w, PS1f);
|
||||||
|
PV0f.w = -(intBitsToFloat(uf_remappedPS[1].z)) * R127f.y;
|
||||||
|
R127f.y = 1.0 / R127f.w;
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 3
|
||||||
|
PV1f.x = -(PV0f.w) + PV0f.y;
|
||||||
|
R126f.y = mul_nonIEEE(R0f.w, PV0f.z);
|
||||||
|
R126f.y = clamp(R126f.y, 0.0, 1.0);
|
||||||
|
PV1f.z = mul_nonIEEE(R6f.x, R6f.x);
|
||||||
|
PV1f.w = PV0f.x + -(intBitsToFloat(uf_remappedPS[2].z));
|
||||||
|
PS1f = 1.0 / intBitsToFloat(uf_remappedPS[3].y);
|
||||||
|
// 4
|
||||||
|
PV0f.x = PV1f.w * R127f.y;
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
PV0f.y = PV1f.x * PS1f;
|
||||||
|
PV0f.y = clamp(PV0f.y, 0.0, 1.0);
|
||||||
|
PV0f.z = mul_nonIEEE(R6f.z, R6f.z);
|
||||||
|
PV0f.w = mul_nonIEEE(R6f.y, R6f.y);
|
||||||
|
R127f.y = mul_nonIEEE(PV1f.z, R9f.x);
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R126f.y;
|
||||||
|
R127f.x = mul_nonIEEE(PV0f.w, R3f.y);
|
||||||
|
R126f.y = mul_nonIEEE(PV0f.z, R3f.w);
|
||||||
|
R123f.z = (intBitsToFloat(0xc0000000) * PV0f.x + intBitsToFloat(0x40400000));
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R126f.x = mul_nonIEEE(backupReg0f, PV0f.y);
|
||||||
|
PS1f = R126f.x;
|
||||||
|
// 6
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
backupReg1f = R0f.y;
|
||||||
|
backupReg2f = R0f.z;
|
||||||
|
PV0f.x = backupReg0f + -(R1f.x);
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.w, PV1f.z);
|
||||||
|
PV0f.z = backupReg1f + -(R1f.y);
|
||||||
|
PV0f.w = backupReg2f + -(R1f.z);
|
||||||
|
// 7
|
||||||
|
R123f.x = (mul_nonIEEE(PV0f.w,R126f.y) + R1f.z);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(PV0f.z,R127f.x) + R1f.y);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
PV1f.z = mul_nonIEEE(R126f.x, PV0f.y);
|
||||||
|
R123f.w = (mul_nonIEEE(PV0f.x,R127f.y) + R1f.x);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
// 8
|
||||||
|
backupReg0f = R4f.x;
|
||||||
|
R4f.x = mul_nonIEEE(R5f.x, PV1f.w);
|
||||||
|
R4f.y = mul_nonIEEE(R5f.y, PV1f.y);
|
||||||
|
R4f.z = mul_nonIEEE(R5f.z, PV1f.x);
|
||||||
|
R4f.w = mul_nonIEEE(backupReg0f, PV1f.z);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R4f.x, R4f.y, R4f.z, R4f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,172 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 2a045e62b99640b5
|
||||||
|
// Shrine of Resurrection - walls
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb2b30000 res 512x256x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb2b63000 res 128x64x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb2b42000 res 512x256x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xb2b42000 res 512x256x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R1f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R1f.z = (texture(textureUnitPS6, R0f.zw).w);
|
||||||
|
R0f.xyzw = (texture(textureUnitPS3, R0f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
R127f.x = (R4f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R127f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
R127f.w = (R4f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.y);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.z);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R123f.w = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.w);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = mul_nonIEEE(R3f.w, PS0f);
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.x, PS1f);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.w,R127f.w) + PV1f.z);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(PV1f.y, PS1f);
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.w, PS1f);
|
||||||
|
R127f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R1f.w);
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 3
|
||||||
|
PV1f.x = -(PV0f.y) + 1.0;
|
||||||
|
R127f.y = (mul_nonIEEE(R3f.y,R127f.x) + PV0f.z)/2.0;
|
||||||
|
R127f.z = (mul_nonIEEE(R3f.x,R127f.x) + PV0f.x)/2.0;
|
||||||
|
R126f.w = (mul_nonIEEE(R3f.z,R127f.x) + PV0f.w)/2.0;
|
||||||
|
PS1f = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R1f.w);
|
||||||
|
// 4
|
||||||
|
PV0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), R1f.w);
|
||||||
|
PV0f.y = R4f.z * intBitsToFloat(0x427f0000);
|
||||||
|
R126f.z = mul_nonIEEE(R1f.z, R127f.w);
|
||||||
|
R127f.w = mul_nonIEEE(R1f.z, PS1f);
|
||||||
|
PS0f = sqrt(PV1f.x);
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R127f.z;
|
||||||
|
R127f.x = (mul_nonIEEE(R2f.z,PS0f) + R126f.w);
|
||||||
|
PV1f.y = mul_nonIEEE(R1f.z, PV0f.x);
|
||||||
|
R127f.z = (mul_nonIEEE(R2f.y,PS0f) + R127f.y);
|
||||||
|
R126f.w = (mul_nonIEEE(R2f.x,PS0f) + backupReg0f);
|
||||||
|
R126f.x = floor(PV0f.y);
|
||||||
|
R126f.x *= 4.0;
|
||||||
|
PS1f = R126f.x;
|
||||||
|
// 6
|
||||||
|
R2f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R126f.z);
|
||||||
|
R2f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.w);
|
||||||
|
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV1f.y);
|
||||||
|
R3f.w = R0f.w;
|
||||||
|
R4f.x = mul_nonIEEE(R1f.x, R0f.x);
|
||||||
|
PS0f = R4f.x;
|
||||||
|
// 7
|
||||||
|
R3f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R4f.y = mul_nonIEEE(R1f.x, R0f.y);
|
||||||
|
R4f.z = mul_nonIEEE(R1f.x, R0f.z);
|
||||||
|
R2f.w = 1.0;
|
||||||
|
R3f.y = intBitsToFloat(uf_remappedPS[2].z);
|
||||||
|
PS1f = R3f.y;
|
||||||
|
// 8
|
||||||
|
R0f.xyz = vec3(R126f.w,R127f.z,R127f.x) + vec3(0.5,0.5,0.5);
|
||||||
|
R4f.w = intBitsToFloat(0x3b808081);
|
||||||
|
R0f.w = (R126f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
PS0f = R0f.w;
|
||||||
|
// 9
|
||||||
|
R8f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R8f.w = R2f.w;
|
||||||
|
// 10
|
||||||
|
R7f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R7f.w = R0f.w;
|
||||||
|
// 11
|
||||||
|
R6f.xyz = vec3(R4f.x,R4f.y,R4f.z);
|
||||||
|
R6f.w = R4f.w;
|
||||||
|
// 12
|
||||||
|
R5f.xyz = vec3(R3f.x,R3f.y,R3f.z);
|
||||||
|
R5f.w = R3f.w;
|
||||||
|
// export
|
||||||
|
if( ((vec4(R5f.x, R5f.y, R5f.z, R5f.w)).a >= uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||||
|
passPixelColor1 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor3 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor5 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,311 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 2a87149b7154c69d
|
||||||
|
// Bomb - smoke
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21048800 res 256x128x1 dim 1 tm: 4 format 0007 compSel: 0 1 1 1 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x2105e800 res 256x256x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x210b5000 res 200x200x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 10) uniform samplerCubeArray textureUnitPS10;// Tex10 addr 0x3d568800 res 16x16x1 dim 3 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x2) sliceView: 0x0 (num 0x6) Sampler10 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem7;
|
||||||
|
layout(location = 5) in vec4 passParameterSem8;
|
||||||
|
layout(location = 6) in vec4 passParameterSem9;
|
||||||
|
layout(location = 7) in vec4 passParameterSem11;
|
||||||
|
layout(location = 8) in vec4 passParameterSem14;
|
||||||
|
layout(location = 9) in vec4 passParameterSem15;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
void redcCUBE(vec4 src0, vec4 src1, out vec3 stm, out int faceId)
|
||||||
|
{
|
||||||
|
// stm -> x .. s, y .. t, z .. MajorAxis*2.0
|
||||||
|
vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x));
|
||||||
|
float rx = inputCoord.x;
|
||||||
|
float ry = inputCoord.y;
|
||||||
|
float rz = inputCoord.z;
|
||||||
|
if( abs(rx) > abs(ry) && abs(rx) > abs(rz) )
|
||||||
|
{
|
||||||
|
stm.z = rx*2.0;
|
||||||
|
stm.xy = vec2(ry,rz);
|
||||||
|
if( rx >= 0.0 )
|
||||||
|
{
|
||||||
|
faceId = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
faceId = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) )
|
||||||
|
{
|
||||||
|
stm.z = ry*2.0;
|
||||||
|
stm.xy = vec2(rx,rz);
|
||||||
|
if( ry >= 0.0 )
|
||||||
|
{
|
||||||
|
faceId = 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
faceId = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) )
|
||||||
|
{
|
||||||
|
stm.z = rz*2.0;
|
||||||
|
stm.xy = vec2(rx,ry);
|
||||||
|
if( rz >= 0.0 )
|
||||||
|
{
|
||||||
|
faceId = 4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
faceId = 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
vec3 redcCUBEReverse(vec2 st, int faceId)
|
||||||
|
{
|
||||||
|
st.yx = st.xy;
|
||||||
|
vec3 v;
|
||||||
|
float majorAxis = 1.0;
|
||||||
|
if( faceId == 0 )
|
||||||
|
{
|
||||||
|
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
|
||||||
|
v.x = 1.0;
|
||||||
|
}
|
||||||
|
else if( faceId == 1 )
|
||||||
|
{
|
||||||
|
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
|
||||||
|
v.x = -1.0;
|
||||||
|
}
|
||||||
|
else if( faceId == 2 )
|
||||||
|
{
|
||||||
|
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
|
||||||
|
v.y = 1.0;
|
||||||
|
}
|
||||||
|
else if( faceId == 3 )
|
||||||
|
{
|
||||||
|
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
|
||||||
|
v.y = -1.0;
|
||||||
|
}
|
||||||
|
else if( faceId == 4 )
|
||||||
|
{
|
||||||
|
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
|
||||||
|
v.z = 1.0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
|
||||||
|
v.z = -1.0;
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R10f = vec4(0.0);
|
||||||
|
vec4 R11f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
float cubeMapArrayIndex10 = 0.0;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem7;
|
||||||
|
R5f = passParameterSem8;
|
||||||
|
R6f = passParameterSem9;
|
||||||
|
R7f = passParameterSem11;
|
||||||
|
R8f = passParameterSem14;
|
||||||
|
R9f = passParameterSem15;
|
||||||
|
R10f.xw = (texture(textureUnitPS0, R5f.xy).xw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R10f.x;
|
||||||
|
backupReg1f = R7f.z;
|
||||||
|
R10f.x = (R0f.w * 2.0 + -(1.0));
|
||||||
|
R123f.y = (backupReg0f * 2.0 + -(1.0));
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
R7f.z = -(backupReg1f);
|
||||||
|
R123f.w = (R10f.w * 2.0 + -(1.0));
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
PV1f.x = mul_nonIEEE(R3f.y, PV0f.w);
|
||||||
|
R10f.y = mul_nonIEEE(R2f.y, PS0f);
|
||||||
|
PV1f.z = mul_nonIEEE(R3f.y, PV0f.y);
|
||||||
|
R10f.w = mul_nonIEEE(R2f.x, PS0f);
|
||||||
|
R11f.w = intBitsToFloat(uf_remappedPS[0].x);
|
||||||
|
PS1f = R11f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R5f.z;
|
||||||
|
backupReg1f = R5f.w;
|
||||||
|
R5f.xyz = vec3(R6f.x,R6f.y,backupReg0f) + vec3(PV1f.z,PV1f.x,PV1f.z);
|
||||||
|
R5f.w = backupReg1f + PV1f.x;
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 3
|
||||||
|
redcCUBE(vec4(R7f.z,R7f.z,R7f.x,R7f.y),vec4(R7f.y,R7f.x,R7f.z,R7f.z),cubeMapSTM,cubeMapFaceId);
|
||||||
|
R127f.x = cubeMapSTM.x;
|
||||||
|
R127f.y = cubeMapSTM.y;
|
||||||
|
R127f.z = cubeMapSTM.z;
|
||||||
|
R127f.w = intBitsToFloat(cubeMapFaceId);
|
||||||
|
PV1f.x = R127f.x;
|
||||||
|
PV1f.y = R127f.y;
|
||||||
|
PV1f.z = R127f.z;
|
||||||
|
PV1f.w = R127f.w;
|
||||||
|
PS1f = R2f.z * PS0f;
|
||||||
|
// 4
|
||||||
|
R123f.x = (mul_nonIEEE(PS1f,intBitsToFloat(uf_remappedPS[1].w)) + -(intBitsToFloat(uf_remappedPS[1].y)));
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
R2f.y = mul_nonIEEE(R4f.w, R4f.w);
|
||||||
|
R11f.z = PV1f.w;
|
||||||
|
R4f.w = -(R9f.w) + 1.0;
|
||||||
|
PS0f = 1.0 / abs(PV1f.z);
|
||||||
|
// 5
|
||||||
|
R2f.x = R0f.x + -(R1f.x);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.y,PS0f) + 1.5);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
R123f.z = (mul_nonIEEE(R127f.x,PS0f) + 1.5);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R9f.w = R0f.y + -(R1f.y);
|
||||||
|
PS1f = 1.0 / PV0f.x;
|
||||||
|
// 6
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
R11f.x = PV1f.y;
|
||||||
|
R11f.y = PV1f.z;
|
||||||
|
R0f.z = -(intBitsToFloat(uf_remappedPS[1].z)) * PS1f;
|
||||||
|
R2f.w = backupReg0f + -(R1f.z);
|
||||||
|
R2f.z = R8f.x + 0.0;
|
||||||
|
PS0f = R2f.z;
|
||||||
|
R5f.x = (texture(textureUnitPS2, R5f.xy).w);
|
||||||
|
R0f.xw = (texture(textureUnitPS1, R5f.zw).xw);
|
||||||
|
R5f.z = (texture(textureUnitPS4, R10f.wy).x);
|
||||||
|
R11f.xyz = (textureLod(textureUnitPS10, vec4(redcCUBEReverse(R11f.xy,floatBitsToInt(R11f.z)),cubeMapArrayIndex10),R11f.w).xyz);
|
||||||
|
// 0
|
||||||
|
R123f.x = (R0f.z * intBitsToFloat(0x3d4ccccd) + -(0.5));
|
||||||
|
R123f.x = clamp(R123f.x, 0.0, 1.0);
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
PV0f.y = R5f.x + R10f.x;
|
||||||
|
R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R5f.z) + intBitsToFloat(uf_remappedPS[1].x));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R127f.w = mul_nonIEEE(R11f.x, R4f.w);
|
||||||
|
R127f.z = mul_nonIEEE(R11f.y, R4f.w);
|
||||||
|
PS0f = R127f.z;
|
||||||
|
// 1
|
||||||
|
PV1f.x = max(PV0f.y, intBitsToFloat(0x3dcccccd));
|
||||||
|
PV1f.y = mul_nonIEEE(R0f.w, PV0f.y);
|
||||||
|
R126f.z = -(PV0f.x) + 1.0;
|
||||||
|
R126f.w = -(R0f.z) + PV0f.z;
|
||||||
|
R126f.w = clamp(R126f.w, 0.0, 1.0);
|
||||||
|
R127f.y = mul_nonIEEE(R11f.z, R4f.w);
|
||||||
|
PS1f = R127f.y;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R8f.y;
|
||||||
|
PV0f.x = mul_nonIEEE(R1f.w, PV1f.y);
|
||||||
|
R8f.y = backupReg0f + 0.0;
|
||||||
|
PV0f.z = min(PV1f.x, 0.5);
|
||||||
|
R4f.w = R8f.z + 0.0;
|
||||||
|
R8f.x = (mul_nonIEEE(R127f.w,intBitsToFloat(uf_remappedPS[2].y)) + 0.0);
|
||||||
|
PS0f = R8f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.x = mul_nonIEEE(PV0f.x, R2f.y);
|
||||||
|
R2f.y = (mul_nonIEEE(R127f.z,intBitsToFloat(uf_remappedPS[2].y)) + 0.0);
|
||||||
|
R8f.z = (mul_nonIEEE(R127f.y,intBitsToFloat(uf_remappedPS[2].y)) + 0.0);
|
||||||
|
PV1f.w = PV0f.z + intBitsToFloat(0xbdcccccd);
|
||||||
|
R3f.w = R3f.x * 1.0;
|
||||||
|
PS1f = R3f.w;
|
||||||
|
// 4
|
||||||
|
PV0f.y = PV1f.w * intBitsToFloat(0x40200000);
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.x, R126f.z);
|
||||||
|
PV0f.w = clamp(PV0f.w, 0.0, 1.0);
|
||||||
|
// 5
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV1f.x = mul_nonIEEE(backupReg0f, PV0f.y);
|
||||||
|
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
|
||||||
|
R126f.z = mul_nonIEEE(PV0f.w, R126f.w);
|
||||||
|
R126f.z = clamp(R126f.z, 0.0, 1.0);
|
||||||
|
// 6
|
||||||
|
R123f.x = (mul_nonIEEE(R2f.x,PV1f.x) + R1f.x);
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
R123f.z = (mul_nonIEEE(R9f.w,PV1f.x) + R1f.y);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R2f.w,PV1f.x) + R1f.z);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
// 7
|
||||||
|
R1f.x = mul_nonIEEE(PV0f.z, R126f.z);
|
||||||
|
R1f.y = mul_nonIEEE(PV0f.x, R126f.z);
|
||||||
|
R1f.w = mul_nonIEEE(PV0f.w, R126f.z);
|
||||||
|
// 0
|
||||||
|
R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R2f.y) + R8f.y);
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R8f.x) + R2f.z);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R8f.z) + R4f.w);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
// 1
|
||||||
|
R3f.x = mul_nonIEEE(R1f.y, PV0f.y);
|
||||||
|
R3f.y = mul_nonIEEE(R1f.x, PV0f.x);
|
||||||
|
R3f.z = mul_nonIEEE(R1f.w, PV0f.w);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R3f.x, R3f.y, R3f.z, R3f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,119 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 2f64af19b1835ab0
|
||||||
|
// Shrine - ending particles
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fd4000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R4f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
backupReg1f = R0f.z;
|
||||||
|
backupReg2f = R0f.y;
|
||||||
|
R0f.x = mul_nonIEEE(R0f.w, R4f.w);
|
||||||
|
R0f.x = clamp(R0f.x, 0.0, 1.0);
|
||||||
|
PV0f.y = backupReg0f + -(R1f.x);
|
||||||
|
PV0f.z = backupReg1f + -(R1f.z);
|
||||||
|
R127f.w = backupReg2f + -(R1f.y);
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
R5f.x = (mul_nonIEEE(PV0f.y,R4f.x) + R1f.x);
|
||||||
|
PV1f.y = R2f.z * PS0f;
|
||||||
|
R5f.z = (mul_nonIEEE(PV0f.z,R4f.z) + R1f.z);
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R1f.y;
|
||||||
|
R1f.x = mul_nonIEEE(R2f.x, PS1f);
|
||||||
|
R1f.y = mul_nonIEEE(R2f.y, PS1f);
|
||||||
|
R1f.z = (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[0].w)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R5f.y = (mul_nonIEEE(R127f.w,R4f.y) + backupReg0f);
|
||||||
|
PS0f = R5f.y;
|
||||||
|
R1f.x = (texture(textureUnitPS4, R1f.xy).x);
|
||||||
|
// 0
|
||||||
|
R127f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.x) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
PS0f = 1.0 / R1f.z;
|
||||||
|
// 1
|
||||||
|
PV1f.y = -(intBitsToFloat(uf_remappedPS[0].z)) * PS0f;
|
||||||
|
R127f.z = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 2
|
||||||
|
PV0f.w = -(PV1f.y) + R127f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.y = PV0f.w * R127f.z;
|
||||||
|
PV1f.y = clamp(PV1f.y, 0.0, 1.0);
|
||||||
|
// 4
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV0f.x = mul_nonIEEE(backupReg0f, PV1f.y);
|
||||||
|
// 5
|
||||||
|
R5f.w = mul_nonIEEE(R3f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R5f.x, R5f.y, R5f.z, R5f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,189 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 319e60116b59ceec
|
||||||
|
// Sheikah Tower - active
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0x34833000 res 64x64x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0x34834000 res 128x128x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0x34836000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem6;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R122f = 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 = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem6;
|
||||||
|
R5f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R0f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R0f.xyz = (texture(textureUnitPS3, R0f.xy).xyz);
|
||||||
|
// 0
|
||||||
|
R126f.x = (R5f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R126f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
R127f.w = (R5f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R127f.x = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.y);
|
||||||
|
R127f.y = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.z);
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R126f.w = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.w);
|
||||||
|
R122f.x = (mul_nonIEEE(-(R4f.z),intBitsToFloat(uf_remappedPS[0].x)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R122f.x = clamp(R122f.x, 0.0, 1.0);
|
||||||
|
PS1f = R122f.x;
|
||||||
|
// 2
|
||||||
|
R125f.x = R5f.z * intBitsToFloat(0x427f0000);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.w,R127f.w) + PV1f.z);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.w, R127f.w);
|
||||||
|
R127f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),PS1f) + 1.0);
|
||||||
|
PV0f.w = R127f.w;
|
||||||
|
R5f.x = mul_nonIEEE(R1f.x, R0f.x);
|
||||||
|
PS0f = R5f.x;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = -(PV0f.y) + 1.0;
|
||||||
|
PV1f.y = mul_nonIEEE(backupReg0f, PV0f.z);
|
||||||
|
PV1f.z = mul_nonIEEE(R127f.y, PV0f.z);
|
||||||
|
PV1f.w = mul_nonIEEE(R126f.w, PV0f.z);
|
||||||
|
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.w);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
R126f.x = (mul_nonIEEE(R3f.z,backupReg0f) + PV1f.w)/2.0;
|
||||||
|
R127f.y = (mul_nonIEEE(R3f.y,backupReg0f) + PV1f.z)/2.0;
|
||||||
|
R126f.z = (mul_nonIEEE(R3f.x,backupReg0f) + PV1f.y)/2.0;
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y), R127f.w);
|
||||||
|
PS0f = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z), R127f.w);
|
||||||
|
// 5
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
backupReg1f = R127f.x;
|
||||||
|
R127f.x = floor(R125f.x);
|
||||||
|
R127f.x *= 4.0;
|
||||||
|
R126f.y = mul_nonIEEE(R0f.w, PS0f);
|
||||||
|
PV1f.z = mul_nonIEEE(R0f.w, R127f.z);
|
||||||
|
PV1f.w = mul_nonIEEE(backupReg0f, PV0f.w);
|
||||||
|
PS1f = sqrt(backupReg1f);
|
||||||
|
PS1f /= 2.0;
|
||||||
|
// 6
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg1f = R2f.y;
|
||||||
|
backupReg2f = R126f.z;
|
||||||
|
R126f.x = (mul_nonIEEE(R2f.z,PS1f) + backupReg0f);
|
||||||
|
R2f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w), PV1f.w);
|
||||||
|
R126f.z = (mul_nonIEEE(backupReg1f,PS1f) + R127f.y);
|
||||||
|
R127f.w = (mul_nonIEEE(R2f.x,PS1f) + backupReg2f);
|
||||||
|
R2f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w), PV1f.z);
|
||||||
|
PS0f = R2f.x;
|
||||||
|
// 7
|
||||||
|
backupReg0f = R1f.x;
|
||||||
|
backupReg0f = R1f.x;
|
||||||
|
R1f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R5f.y = mul_nonIEEE(backupReg0f, R0f.y);
|
||||||
|
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w), R126f.y);
|
||||||
|
R1f.w = 1.0;
|
||||||
|
R5f.z = mul_nonIEEE(backupReg0f, R0f.z);
|
||||||
|
PS1f = R5f.z;
|
||||||
|
// 8
|
||||||
|
R0f.x = R127f.w + 0.5;
|
||||||
|
R1f.y = 0.0;
|
||||||
|
R0f.z = R126f.x + 0.5;
|
||||||
|
R2f.w = 1.0;
|
||||||
|
R0f.y = R126f.z + 0.5;
|
||||||
|
PS0f = R0f.y;
|
||||||
|
// 9
|
||||||
|
R5f.w = intBitsToFloat(0x3b808081);
|
||||||
|
R0f.w = (R127f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
PS1f = R0f.w;
|
||||||
|
// 10
|
||||||
|
R9f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R9f.w = R2f.w;
|
||||||
|
// 11
|
||||||
|
R8f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R8f.w = R0f.w;
|
||||||
|
// 12
|
||||||
|
R7f.xyz = vec3(R5f.x,R5f.y,R5f.z);
|
||||||
|
R7f.w = R5f.w;
|
||||||
|
// 13
|
||||||
|
R6f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R6f.w = R1f.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor1 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor3 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
passPixelColor5 = vec4(R9f.x, R9f.y, R9f.z, R9f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 38d70ed9280bb3bc
|
||||||
|
// Bloom color cast
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[1];
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf46ac800 res 320x180x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x5) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec4 R0f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
backupReg1f = R0f.y;
|
||||||
|
backupReg2f = R0f.z;
|
||||||
|
vec3 magicColor = intBitsToFloat(uf_remappedPS[0].xyz);
|
||||||
|
vec3 colhsv = rgb2hsv(magicColor.rgb);
|
||||||
|
magicColor.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
R0f.x = mul_nonIEEE(backupReg0f, magicColor.x);
|
||||||
|
R0f.y = mul_nonIEEE(backupReg1f, magicColor.y);
|
||||||
|
R0f.z = mul_nonIEEE(backupReg2f, magicColor.z);
|
||||||
|
R0f.w = 1.0;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
}
|
@ -0,0 +1,170 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 3d383d2d61500c9c
|
||||||
|
// Sheikah Tower - middle structure above control panel
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb3798000 res 1024x1024x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb391b000 res 512x512x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb381a000 res 1024x1024x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xb381a000 res 1024x1024x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R1f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R1f.z = (texture(textureUnitPS6, R0f.zw).w);
|
||||||
|
R0f.xyz = (texture(textureUnitPS3, R0f.xy).xyz);
|
||||||
|
// 0
|
||||||
|
R127f.x = (R4f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R127f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
R127f.w = (R4f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.y);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R123f.w = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = mul_nonIEEE(R3f.w, PS0f);
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.y, PS1f);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.w,R127f.w) + PV1f.z);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(PV1f.x, PS1f);
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.w, PS1f);
|
||||||
|
R127f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R1f.w);
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 3
|
||||||
|
PV1f.x = -(PV0f.y) + 1.0;
|
||||||
|
R127f.y = (mul_nonIEEE(R3f.y,R127f.x) + PV0f.z)/2.0;
|
||||||
|
R127f.z = (mul_nonIEEE(R3f.x,R127f.x) + PV0f.x)/2.0;
|
||||||
|
R126f.w = (mul_nonIEEE(R3f.z,R127f.x) + PV0f.w)/2.0;
|
||||||
|
PS1f = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R1f.w);
|
||||||
|
// 4
|
||||||
|
PV0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), R1f.w);
|
||||||
|
PV0f.y = R4f.z * intBitsToFloat(0x427f0000);
|
||||||
|
R126f.z = mul_nonIEEE(R1f.z, R127f.w);
|
||||||
|
R127f.w = mul_nonIEEE(R1f.z, PS1f);
|
||||||
|
PS0f = sqrt(PV1f.x);
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R127f.z;
|
||||||
|
R127f.x = (mul_nonIEEE(R2f.z,PS0f) + R126f.w);
|
||||||
|
PV1f.y = mul_nonIEEE(R1f.z, PV0f.x);
|
||||||
|
R127f.z = (mul_nonIEEE(R2f.y,PS0f) + R127f.y);
|
||||||
|
R126f.w = (mul_nonIEEE(R2f.x,PS0f) + backupReg0f);
|
||||||
|
R126f.x = floor(PV0f.y);
|
||||||
|
R126f.x *= 4.0;
|
||||||
|
PS1f = R126f.x;
|
||||||
|
// 6
|
||||||
|
R2f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R126f.z);
|
||||||
|
R2f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.w);
|
||||||
|
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV1f.y);
|
||||||
|
R3f.w = 1.0;
|
||||||
|
R4f.x = mul_nonIEEE(R1f.x, R0f.x);
|
||||||
|
PS0f = R4f.x;
|
||||||
|
// 7
|
||||||
|
R3f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R4f.y = mul_nonIEEE(R1f.x, R0f.y);
|
||||||
|
R4f.z = mul_nonIEEE(R1f.x, R0f.z);
|
||||||
|
R2f.w = 1.0;
|
||||||
|
R3f.y = intBitsToFloat(uf_remappedPS[2].z);
|
||||||
|
PS1f = R3f.y;
|
||||||
|
// 8
|
||||||
|
R0f.xyz = vec3(R126f.w,R127f.z,R127f.x) + vec3(0.5,0.5,0.5);
|
||||||
|
R4f.w = intBitsToFloat(0x3b808081);
|
||||||
|
R0f.w = (R126f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
PS0f = R0f.w;
|
||||||
|
// 9
|
||||||
|
R8f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R8f.w = R2f.w;
|
||||||
|
// 10
|
||||||
|
R7f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R7f.w = R0f.w;
|
||||||
|
// 11
|
||||||
|
R6f.xyz = vec3(R4f.x,R4f.y,R4f.z);
|
||||||
|
R6f.w = R4f.w;
|
||||||
|
// 12
|
||||||
|
R5f.xyz = vec3(R3f.x,R3f.y,R3f.z);
|
||||||
|
R5f.w = R3f.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||||
|
passPixelColor1 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor3 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor5 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,102 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 42c9208b54ad72ca
|
||||||
|
// Guardian scout fire debris
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fee000 res 64x64x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fee000 res 64x64x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem8;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
|
||||||
|
R3f.xyzw = (texture(textureUnitPS1, R3f.zw).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV0f.x = R4f.w + R3f.w;
|
||||||
|
PV0f.y = mul_nonIEEE(R3f.y, R3f.y);
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.x, R3f.x);
|
||||||
|
PV0f.w = mul_nonIEEE(R3f.z, R3f.z);
|
||||||
|
R127f.w = backupReg0f + -(R1f.x);
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
PV1f.x = mul_nonIEEE(R0f.w, PV0f.x);
|
||||||
|
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
|
||||||
|
R127f.y = (mul_nonIEEE(R4f.z,R4f.z) + PV0f.w);
|
||||||
|
R123f.z = (mul_nonIEEE(R4f.y,R4f.y) + PV0f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R4f.x,R4f.x) + PV0f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = R0f.y + -(R1f.y);
|
||||||
|
// 2
|
||||||
|
R0f.x = (mul_nonIEEE(R127f.w,PV1f.w) + R1f.x);
|
||||||
|
PV0f.y = R0f.z + -(R1f.z);
|
||||||
|
R0f.w = mul_nonIEEE(R2f.x, PV1f.x);
|
||||||
|
R0f.y = (mul_nonIEEE(PS1f,PV1f.z) + R1f.y);
|
||||||
|
PS0f = R0f.y;
|
||||||
|
// 3
|
||||||
|
R0f.z = (mul_nonIEEE(PV0f.y,R127f.y) + R1f.z);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,129 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 458dd826bd589332
|
||||||
|
// Hateno fire - glow
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fc2000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fd4000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R5f.xw = (texture(textureUnitPS0, R4f.xy).xw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R3f.y, intBitsToFloat(uf_remappedPS[0].y));
|
||||||
|
PV0f.y = mul_nonIEEE(R3f.y, intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
R123f.z = (R5f.w * 2.0 + -(1.0));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (R5f.x * 2.0 + -(1.0));
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
backupReg0f = R4f.z;
|
||||||
|
backupReg1f = R4f.w;
|
||||||
|
R4f.x = mul_nonIEEE(R2f.x, PS0f);
|
||||||
|
R4f.y = mul_nonIEEE(R2f.y, PS0f);
|
||||||
|
R4f.z = (mul_nonIEEE(PV0f.y,PV0f.w) + backupReg0f);
|
||||||
|
R4f.w = (mul_nonIEEE(PV0f.x,PV0f.z) + backupReg1f);
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
R2f.x = R0f.x + -(R1f.x);
|
||||||
|
R2f.y = R2f.z * PS1f;
|
||||||
|
R2f.z = R0f.z + -(R1f.z);
|
||||||
|
R2f.w = R0f.y + -(R1f.y);
|
||||||
|
R3f.z = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS0f = R3f.z;
|
||||||
|
R4f.x = (texture(textureUnitPS4, R4f.xy).x);
|
||||||
|
R5f.xyzw = (texture(textureUnitPS1, R4f.zw).xyzw);
|
||||||
|
// 0
|
||||||
|
R127f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R4f.x) + intBitsToFloat(uf_remappedPS[2].x));
|
||||||
|
R127f.y = mul_nonIEEE(R0f.w, R5f.w);
|
||||||
|
R127f.y = clamp(R127f.y, 0.0, 1.0);
|
||||||
|
R123f.z = (mul_nonIEEE(R2f.y,intBitsToFloat(uf_remappedPS[2].w)) + -(intBitsToFloat(uf_remappedPS[2].y)));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R0f.y = (mul_nonIEEE(R2f.w,R5f.y) + R1f.y);
|
||||||
|
PS0f = R0f.y;
|
||||||
|
// 1
|
||||||
|
R0f.x = (mul_nonIEEE(R2f.x,R5f.x) + R1f.x);
|
||||||
|
R0f.z = (mul_nonIEEE(R2f.z,R5f.z) + R1f.z);
|
||||||
|
PS1f = 1.0 / PV0f.z;
|
||||||
|
// 2
|
||||||
|
PV0f.y = -(intBitsToFloat(uf_remappedPS[2].z)) * PS1f;
|
||||||
|
// 3
|
||||||
|
PV1f.w = -(PV0f.y) + R127f.x;
|
||||||
|
// 4
|
||||||
|
PV0f.y = PV1f.w * R3f.z;
|
||||||
|
PV0f.y = clamp(PV0f.y, 0.0, 1.0);
|
||||||
|
// 5
|
||||||
|
PV1f.x = mul_nonIEEE(R127f.y, PV0f.y);
|
||||||
|
// 6
|
||||||
|
R0f.w = mul_nonIEEE(R3f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,108 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 48a94cda336d2976
|
||||||
|
// Hateno fire - horizontal flare
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fdb000 res 256x78x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 1 1 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fe2000 res 256x256x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem8;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
|
||||||
|
R3f.xyzw = (texture(textureUnitPS1, R3f.zw).xyzw);
|
||||||
|
// 0
|
||||||
|
R127f.x = mul_nonIEEE(R4f.y, R4f.y);
|
||||||
|
PV0f.y = mul_nonIEEE(R4f.w, R3f.w);
|
||||||
|
PV0f.z = mul_nonIEEE(R4f.x, R4f.x);
|
||||||
|
R127f.w = mul_nonIEEE(R4f.z, R4f.z);
|
||||||
|
PS0f = mul_nonIEEE(R3f.x, R3f.x);
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV1f.x = mul_nonIEEE(R3f.z, R3f.z);
|
||||||
|
PV1f.y = mul_nonIEEE(R0f.w, PV0f.y);
|
||||||
|
PV1f.z = mul_nonIEEE(R3f.y, R3f.y);
|
||||||
|
R126f.w = mul_nonIEEE(PV0f.z, PS0f);
|
||||||
|
R126f.x = backupReg0f + -(R1f.x);
|
||||||
|
PS1f = R126f.x;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
backupReg1f = R0f.z;
|
||||||
|
PV0f.x = mul_nonIEEE(R1f.w, PV1f.y);
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
PV0f.y = backupReg0f + -(R1f.y);
|
||||||
|
PV0f.z = mul_nonIEEE(R127f.w, PV1f.x);
|
||||||
|
PV0f.w = mul_nonIEEE(R127f.x, PV1f.z);
|
||||||
|
PS0f = backupReg1f + -(R1f.z);
|
||||||
|
// 3
|
||||||
|
backupReg0f = R1f.x;
|
||||||
|
backupReg1f = R1f.y;
|
||||||
|
backupReg2f = R1f.z;
|
||||||
|
R1f.x = (mul_nonIEEE(R126f.x,R126f.w) + backupReg0f);
|
||||||
|
R1f.y = (mul_nonIEEE(PV0f.y,PV0f.w) + backupReg1f);
|
||||||
|
R1f.z = (mul_nonIEEE(PS0f,PV0f.z) + backupReg2f);
|
||||||
|
R1f.w = mul_nonIEEE(R2f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R1f.x, R1f.y, R1f.z, R1f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,226 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 4af8a4670205be4c
|
||||||
|
// Shrine - laser beam glow
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[5];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x18b20000 res 128x4x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 0 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem2;
|
||||||
|
layout(location = 3) in vec4 passParameterSem3;
|
||||||
|
layout(location = 4) in vec4 passParameterSem4;
|
||||||
|
layout(location = 5) in vec4 passParameterSem7;
|
||||||
|
layout(location = 6) in vec4 passParameterSem8;
|
||||||
|
layout(location = 7) in vec4 passParameterSem11;
|
||||||
|
layout(location = 8) in vec4 passParameterSem14;
|
||||||
|
layout(location = 9) in vec4 passParameterSem15;
|
||||||
|
layout(location = 10) in vec4 passParameterSem16;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R10f = vec4(0.0);
|
||||||
|
vec4 R11f = vec4(0.0);
|
||||||
|
vec4 R12f = vec4(0.0);
|
||||||
|
vec4 R13f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem2;
|
||||||
|
R3f = passParameterSem3;
|
||||||
|
R4f = passParameterSem4;
|
||||||
|
R5f = passParameterSem7;
|
||||||
|
R6f = passParameterSem8;
|
||||||
|
R7f = passParameterSem11;
|
||||||
|
R8f = passParameterSem14;
|
||||||
|
R9f = passParameterSem15;
|
||||||
|
R10f = passParameterSem16;
|
||||||
|
R13f.xyzw = (texture(textureUnitPS0, R6f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,-0.0),vec4(R2f.x,R2f.y,R2f.z,0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
R127f.z = tempf.x;
|
||||||
|
PS0f = 1.0 / R3f.w;
|
||||||
|
// 1
|
||||||
|
R6f.x = mul_nonIEEE(R3f.x, PS0f);
|
||||||
|
R6f.y = mul_nonIEEE(R3f.y, PS0f);
|
||||||
|
R126f.z = mul_nonIEEE(R13f.x, R13f.x);
|
||||||
|
R127f.w = mul_nonIEEE(R13f.y, R13f.y);
|
||||||
|
R127f.x = mul_nonIEEE(R13f.z, R13f.z);
|
||||||
|
PS1f = R127f.x;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
backupReg1f = R0f.z;
|
||||||
|
R12f.x = R8f.x + 0.0;
|
||||||
|
PV0f.y = backupReg0f + -(R1f.y);
|
||||||
|
PV0f.z = R0f.x + -(R1f.x);
|
||||||
|
PV0f.w = backupReg1f + -(R1f.z);
|
||||||
|
R11f.x = 1.0 / R3f.w;
|
||||||
|
PS0f = R11f.x;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R1f.x;
|
||||||
|
backupReg1f = R1f.y;
|
||||||
|
R1f.x = (mul_nonIEEE(PV0f.z,R126f.z) + backupReg0f);
|
||||||
|
R1f.y = (mul_nonIEEE(PV0f.w,R127f.x) + R1f.z);
|
||||||
|
R1f.z = (mul_nonIEEE(PV0f.y,R127f.w) + backupReg1f);
|
||||||
|
R2f.w = R8f.y + 0.0;
|
||||||
|
tempResultf = 1.0 / sqrt(R127f.z);
|
||||||
|
R1f.w = tempResultf;
|
||||||
|
PS1f = R1f.w;
|
||||||
|
R6f.y = (texture(textureUnitPS4, R6f.xy).x);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R2f.x, R1f.w);
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, R1f.w);
|
||||||
|
R127f.z = R3f.z * R11f.x;
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.z, R1f.w);
|
||||||
|
R127f.x = R8f.z + 0.0;
|
||||||
|
PS0f = R127f.x;
|
||||||
|
// 1
|
||||||
|
tempf.x = dot(vec4(R7f.x,R7f.y,R7f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.w,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
R127f.y = tempf.x;
|
||||||
|
R127f.w = mul_nonIEEE(R5f.x, R1f.x);
|
||||||
|
PS1f = R127f.w;
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(R5f.y, R1f.z);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.z,intBitsToFloat(uf_remappedPS[0].w)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
R127f.z = mul_nonIEEE(R5f.z, R1f.y);
|
||||||
|
PV0f.w = R12f.x + 0.0;
|
||||||
|
PS0f = R2f.w + 0.0;
|
||||||
|
// 3
|
||||||
|
R12f.x = mul_nonIEEE(R127f.w, PV0f.w);
|
||||||
|
PV1f.y = R127f.x + 0.0;
|
||||||
|
PV1f.z = max(R127f.y, -(R127f.y));
|
||||||
|
R2f.w = mul_nonIEEE(PV0f.x, PS0f);
|
||||||
|
PS1f = 1.0 / PV0f.y;
|
||||||
|
// 4
|
||||||
|
PV0f.x = -(intBitsToFloat(uf_remappedPS[1].z)) + intBitsToFloat(uf_remappedPS[1].w);
|
||||||
|
R127f.y = -(intBitsToFloat(uf_remappedPS[0].z)) * PS1f;
|
||||||
|
R5f.z = mul_nonIEEE(R127f.z, PV1f.y);
|
||||||
|
R127f.w = PV1f.z + -(intBitsToFloat(uf_remappedPS[1].z));
|
||||||
|
PS0f = mul_nonIEEE(R5f.w, R13f.w);
|
||||||
|
// 5
|
||||||
|
R127f.x = mul_nonIEEE(R0f.w, PS0f);
|
||||||
|
R127f.x = clamp(R127f.x, 0.0, 1.0);
|
||||||
|
R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R6f.y) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = 1.0 / PV0f.x;
|
||||||
|
// 6
|
||||||
|
PV0f.x = R127f.w * PS1f;
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
PV0f.z = -(R127f.y) + PV1f.w;
|
||||||
|
PS0f = 1.0 / intBitsToFloat(uf_remappedPS[2].y);
|
||||||
|
// 7
|
||||||
|
PV1f.x = PV0f.z * PS0f;
|
||||||
|
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
|
||||||
|
R123f.z = (intBitsToFloat(0xc0000000) * PV0f.x + intBitsToFloat(0x40400000));
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
// 8
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.w, PV1f.z);
|
||||||
|
PV0f.w = mul_nonIEEE(R127f.x, PV1f.x);
|
||||||
|
// 9
|
||||||
|
PV1f.x = mul_nonIEEE(PV0f.w, PV0f.y);
|
||||||
|
// 10
|
||||||
|
R4f.w = mul_nonIEEE(R4f.x, PV1f.x);
|
||||||
|
// 0
|
||||||
|
PV0f.x = -(R2f.w) + intBitsToFloat(uf_remappedPS[3].y);
|
||||||
|
PV0f.y = -(R12f.x) + intBitsToFloat(uf_remappedPS[3].x);
|
||||||
|
PV0f.w = -(R5f.z) + intBitsToFloat(uf_remappedPS[3].z);
|
||||||
|
// 1
|
||||||
|
R127f.x = (mul_nonIEEE(PV0f.w,R10f.y) + R5f.z);
|
||||||
|
PV1f.x = R127f.x;
|
||||||
|
R127f.y = (mul_nonIEEE(PV0f.x,R10f.y) + R2f.w);
|
||||||
|
PV1f.y = R127f.y;
|
||||||
|
R127f.z = (mul_nonIEEE(PV0f.y,R10f.y) + R12f.x);
|
||||||
|
PV1f.z = R127f.z;
|
||||||
|
// 2
|
||||||
|
PV0f.y = R9f.z + -(PV1f.x);
|
||||||
|
PV0f.z = R9f.y + -(PV1f.y);
|
||||||
|
PV0f.w = R9f.x + -(PV1f.z);
|
||||||
|
// 3
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = (mul_nonIEEE(PV0f.w,R9f.w) + R127f.z);
|
||||||
|
PV1f.x = R127f.x;
|
||||||
|
R127f.z = (mul_nonIEEE(PV0f.y,R9f.w) + backupReg0f);
|
||||||
|
PV1f.z = R127f.z;
|
||||||
|
R127f.w = (mul_nonIEEE(PV0f.z,R9f.w) + R127f.y);
|
||||||
|
PV1f.w = R127f.w;
|
||||||
|
// 4
|
||||||
|
PV0f.x = -(PV1f.w) + intBitsToFloat(uf_remappedPS[4].y);
|
||||||
|
PV0f.y = -(PV1f.x) + intBitsToFloat(uf_remappedPS[4].x);
|
||||||
|
PV0f.w = -(PV1f.z) + intBitsToFloat(uf_remappedPS[4].z);
|
||||||
|
// 5
|
||||||
|
R4f.x = (mul_nonIEEE(PV0f.y,R10f.x) + R127f.x);
|
||||||
|
R4f.y = (mul_nonIEEE(PV0f.x,R10f.x) + R127f.w);
|
||||||
|
R4f.z = (mul_nonIEEE(PV0f.w,R10f.x) + R127f.z);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R4f.x, R4f.y, R4f.z, R4f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,174 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 4bdac25bb98f5804
|
||||||
|
// Hateno fire
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fc2000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fc9000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x20fcc800 res 64x64x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 5) in vec4 passParameterSem9;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R122f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R5f = passParameterSem9;
|
||||||
|
R6f.xy = (texture(textureUnitPS0, R4f.zw).xy);
|
||||||
|
R4f.xy = (texture(textureUnitPS0, R4f.xy).xy);
|
||||||
|
R4f.w = (texture(textureUnitPS2, R5f.xy).z);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R4f.x;
|
||||||
|
backupReg1f = R0f.z;
|
||||||
|
R4f.x = backupReg0f + R6f.x;
|
||||||
|
R4f.x /= 2.0;
|
||||||
|
PV0f.x = R4f.x;
|
||||||
|
PV0f.z = R4f.y + R6f.y;
|
||||||
|
PV0f.z /= 2.0;
|
||||||
|
R3f.w = backupReg1f + -(R1f.z);
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
R123f.x = (PV0f.z * 2.0 + -(1.0));
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (PV0f.x * 2.0 + -(1.0));
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
PV1f.z = R2f.z * PS0f;
|
||||||
|
R0f.w = R0f.x + -(R1f.x);
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R2f.x;
|
||||||
|
backupReg1f = R2f.y;
|
||||||
|
R2f.x = mul_nonIEEE(backupReg0f, PS1f);
|
||||||
|
R2f.y = mul_nonIEEE(backupReg1f, PS1f);
|
||||||
|
R123f.z = (mul_nonIEEE(R3f.y,PV1f.x) + -0.0);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R3f.y,PV1f.y) + -0.0);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
R122f.x = (mul_nonIEEE(PV1f.z,intBitsToFloat(uf_remappedPS[0].w)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
PS0f = R122f.x;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
R0f.y = backupReg0f + -(R1f.y);
|
||||||
|
PV1f.z = mul_nonIEEE(R4f.w, PV0f.z);
|
||||||
|
PV1f.w = mul_nonIEEE(R4f.w, PV0f.w);
|
||||||
|
PS1f = 1.0 / PS0f;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R5f.x;
|
||||||
|
backupReg1f = R5f.y;
|
||||||
|
R5f.x = backupReg0f + PV1f.w;
|
||||||
|
R5f.y = backupReg1f + PV1f.z;
|
||||||
|
R4f.z = -(intBitsToFloat(uf_remappedPS[0].z)) * PS1f;
|
||||||
|
R3f.z = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS0f = R3f.z;
|
||||||
|
R5f.xyw = (texture(textureUnitPS2, R5f.xy).xyw);
|
||||||
|
R0f.z = (texture(textureUnitPS4, R2f.xy).x);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R4f.x;
|
||||||
|
R4f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.z) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
R2f.y = (R5f.x * intBitsToFloat(0x3e4ccccd) + backupReg0f);
|
||||||
|
R2f.xyz = (texture(textureUnitPS1, R2f.yy).xyz);
|
||||||
|
// 0
|
||||||
|
PV0f.x = R5f.x + R2f.x;
|
||||||
|
PV0f.y = -(R4f.z) + R4f.x;
|
||||||
|
R127f.z = R5f.x + R2f.z;
|
||||||
|
PV0f.z = R127f.z;
|
||||||
|
R127f.w = R5f.x + R2f.y;
|
||||||
|
PV0f.w = R127f.w;
|
||||||
|
// 1
|
||||||
|
PV1f.x = PV0f.x * intBitsToFloat(0x3e990afe);
|
||||||
|
R127f.y = PV0f.y * R3f.z;
|
||||||
|
R127f.y = clamp(R127f.y, 0.0, 1.0);
|
||||||
|
PV1f.z = mul_nonIEEE(R5f.w, PV0f.x);
|
||||||
|
PV1f.w = mul_nonIEEE(R5f.w, PV0f.w);
|
||||||
|
PS1f = mul_nonIEEE(R5f.w, PV0f.z);
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
R0f.x = (mul_nonIEEE(R0f.w,PV1f.z) + R1f.x);
|
||||||
|
R0f.y = (mul_nonIEEE(backupReg0f,PV1f.w) + R1f.y);
|
||||||
|
R0f.z = (mul_nonIEEE(R3f.w,PS1f) + R1f.z);
|
||||||
|
R123f.w = (R127f.w * intBitsToFloat(0x3f162c23) + PV1f.x);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
// 3
|
||||||
|
R123f.z = (R127f.z * intBitsToFloat(0x3dea7371) + PV0f.w);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
// 4
|
||||||
|
PV0f.y = R5f.y + PV1f.z;
|
||||||
|
PV0f.y /= 2.0;
|
||||||
|
// 5
|
||||||
|
PV1f.x = mul_nonIEEE(R5f.y, PV0f.y);
|
||||||
|
// 6
|
||||||
|
PV0f.w = mul_nonIEEE(R1f.w, PV1f.x);
|
||||||
|
PV0f.w = clamp(PV0f.w, 0.0, 1.0);
|
||||||
|
// 7
|
||||||
|
PV1f.x = mul_nonIEEE(PV0f.w, R127f.y);
|
||||||
|
// 8
|
||||||
|
R0f.w = mul_nonIEEE(R3f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,99 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 5219277e990fe5ba
|
||||||
|
// Bomb - horizontal appearance effect
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fdb000 res 256x78x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 1 1 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fe2000 res 256x256x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem8;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
|
||||||
|
R3f.xyzw = (texture(textureUnitPS1, R3f.zw).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV0f.x = mul_nonIEEE(R4f.w, R3f.w);
|
||||||
|
PV0f.y = mul_nonIEEE(R3f.y, R3f.y);
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.x, R3f.x);
|
||||||
|
PV0f.w = mul_nonIEEE(R3f.z, R3f.z);
|
||||||
|
R127f.w = backupReg0f + -(R1f.x);
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
PV1f.x = mul_nonIEEE(R0f.w, PV0f.x);
|
||||||
|
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
|
||||||
|
R127f.y = mul_nonIEEE(R4f.z, PV0f.w);
|
||||||
|
PV1f.z = mul_nonIEEE(R4f.y, PV0f.y);
|
||||||
|
PV1f.w = mul_nonIEEE(R4f.x, PV0f.z);
|
||||||
|
PS1f = R0f.y + -(R1f.y);
|
||||||
|
// 2
|
||||||
|
R0f.x = (mul_nonIEEE(R127f.w,PV1f.w) + R1f.x);
|
||||||
|
PV0f.y = R0f.z + -(R1f.z);
|
||||||
|
R0f.w = mul_nonIEEE(R2f.x, PV1f.x);
|
||||||
|
R0f.y = (mul_nonIEEE(PS1f,PV1f.z) + R1f.y);
|
||||||
|
PS0f = R0f.y;
|
||||||
|
// 3
|
||||||
|
R0f.z = (mul_nonIEEE(PV0f.y,R127f.y) + R1f.z);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,194 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 5b04d28f319a1d6d
|
||||||
|
// Bomb
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xb2ea5000 res 512x512x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xb2fce000 res 512x512x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb2fac000 res 512x512x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb2f8b000 res 512x512x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem3;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem7;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 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 = passParameterSem3;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem7;
|
||||||
|
R4f.xy = (texture(textureUnitPS3, R0f.xy).xy);
|
||||||
|
R0f.w = (texture(textureUnitPS2, R0f.xy).x);
|
||||||
|
R5f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R6f.xyz = (texture(textureUnitPS1, R0f.xy).xyz);
|
||||||
|
// 0
|
||||||
|
R126f.x = (R4f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R126f.x;
|
||||||
|
PV0f.y = fract(R3f.y);
|
||||||
|
PV0f.z = fract(R3f.x);
|
||||||
|
R127f.w = mul_nonIEEE(R1f.y, R2f.z);
|
||||||
|
R127f.x = mul_nonIEEE(R1f.z, R2f.x);
|
||||||
|
PS0f = R127f.x;
|
||||||
|
// 1
|
||||||
|
PV1f.x = PV0f.z + -(0.5);
|
||||||
|
PV1f.y = mul_nonIEEE(R1f.x, R2f.y);
|
||||||
|
R127f.z = (R4f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV1f.w = PV0f.y + -(0.5);
|
||||||
|
R126f.w = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
PS1f = R126f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = (mul_nonIEEE(-(R2f.y),R1f.z) + R127f.w);
|
||||||
|
R123f.y = (mul_nonIEEE(-(PV1f.w),PV1f.w) + 1.0);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
R123f.z = (mul_nonIEEE(-(PV1f.x),PV1f.x) + 1.0);
|
||||||
|
R123f.z = clamp(R123f.z, 0.0, 1.0);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R127f.w = (mul_nonIEEE(-(R2f.z),R1f.x) + backupReg0f);
|
||||||
|
R125f.w = (mul_nonIEEE(-(R2f.x),R1f.y) + PV1f.y);
|
||||||
|
PS0f = R125f.w;
|
||||||
|
// 3
|
||||||
|
PV1f.x = mul_nonIEEE(PV0f.z, PV0f.y);
|
||||||
|
R127f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R5f.x);
|
||||||
|
R123f.z = (mul_nonIEEE(R127f.z,R127f.z) + R126f.w);
|
||||||
|
R123f.z = clamp(R123f.z, 0.0, 1.0);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(R2f.w, R127f.z);
|
||||||
|
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R5f.y);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 4
|
||||||
|
PV0f.x = mul_nonIEEE(R127f.w, PV1f.w);
|
||||||
|
PV0f.y = -(PV1f.z) + 1.0;
|
||||||
|
PV0f.z = mul_nonIEEE(R127f.x, PV1f.w);
|
||||||
|
PV0f.w = mul_nonIEEE(R125f.w, PV1f.w);
|
||||||
|
PS0f = mul_nonIEEE(PV1f.x, PV1f.x);
|
||||||
|
// 5
|
||||||
|
R123f.x = (mul_nonIEEE(R2f.z,R126f.x) + PV0f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
PV1f.y = mul_nonIEEE(R0f.w, PS0f);
|
||||||
|
R123f.z = (mul_nonIEEE(R2f.y,R126f.x) + PV0f.x);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R2f.x,R126f.x) + PV0f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = sqrt(PV0f.y);
|
||||||
|
// 6
|
||||||
|
R126f.x = (mul_nonIEEE(R1f.x,PS1f) + PV1f.w);
|
||||||
|
PV0f.x = R126f.x;
|
||||||
|
R125f.y = (mul_nonIEEE(R1f.y,PS1f) + PV1f.z);
|
||||||
|
PV0f.y = R125f.y;
|
||||||
|
R126f.z = (mul_nonIEEE(R1f.z,PS1f) + PV1f.x);
|
||||||
|
PV0f.z = R126f.z;
|
||||||
|
PV0f.w = PV1f.y * intBitsToFloat(0x427f0000);
|
||||||
|
R127f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), R5f.z);
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 7
|
||||||
|
tempf.x = dot(vec4(PV0f.x,PV0f.y,PV0f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
R126f.y = tempf.x;
|
||||||
|
PS1f = floor(PV0f.w);
|
||||||
|
PS1f *= 4.0;
|
||||||
|
// 8
|
||||||
|
PV0f.x = PS1f + 2.0;
|
||||||
|
R1f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.z);
|
||||||
|
R1f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.w);
|
||||||
|
R0f.w = 1.0;
|
||||||
|
R1f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.y);
|
||||||
|
PS0f = R1f.x;
|
||||||
|
// 9
|
||||||
|
R0f.x = intBitsToFloat(0x3d008081);
|
||||||
|
R0f.y = intBitsToFloat(uf_remappedPS[2].z);
|
||||||
|
R1f.w = 1.0;
|
||||||
|
R5f.w = PV0f.x * intBitsToFloat(0x3b808081);
|
||||||
|
PS1f = R5f.w;
|
||||||
|
// 10
|
||||||
|
R6f.w = intBitsToFloat(0x3e828283);
|
||||||
|
tempResultf = 1.0 / sqrt(R126f.y);
|
||||||
|
PS0f = tempResultf;
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 11
|
||||||
|
R5f.x = (mul_nonIEEE(R126f.x,PS0f) + 0.5);
|
||||||
|
R5f.y = (mul_nonIEEE(R125f.y,PS0f) + 0.5);
|
||||||
|
R5f.z = (mul_nonIEEE(R126f.z,PS0f) + 0.5);
|
||||||
|
// 12
|
||||||
|
R4f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R4f.w = R1f.w;
|
||||||
|
// 13
|
||||||
|
R3f.xyz = vec3(R5f.x,R5f.y,R5f.z);
|
||||||
|
R3f.w = R5f.w;
|
||||||
|
// 14
|
||||||
|
R2f.xyz = vec3(R6f.x,R6f.y,R6f.z);
|
||||||
|
R2f.w = R6f.w;
|
||||||
|
// 15
|
||||||
|
R1f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R1f.w = R0f.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
passPixelColor1 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
|
||||||
|
passPixelColor3 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||||
|
passPixelColor5 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,167 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 5b9b7727ca24e22b
|
||||||
|
// Shrine - ending field 2
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x216b3000 res 256x256x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x21416000 res 400x100x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 2 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x2137e000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem2;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem7;
|
||||||
|
layout(location = 5) in vec4 passParameterSem8;
|
||||||
|
layout(location = 6) in vec4 passParameterSem9;
|
||||||
|
layout(location = 7) in vec4 passParameterSem11;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R122f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem2;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem7;
|
||||||
|
R5f = passParameterSem8;
|
||||||
|
R6f = passParameterSem9;
|
||||||
|
R7f = passParameterSem11;
|
||||||
|
R8f.xw = (texture(textureUnitPS0, R5f.xy).xw);
|
||||||
|
R6f.x = (texture(textureUnitPS2, R6f.xy).w);
|
||||||
|
// 0
|
||||||
|
R123f.x = (R8f.x * 2.0 + -(1.0));
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R3f.y, intBitsToFloat(uf_remappedPS[0].y));
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.y, intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
R123f.w = (R8f.w * 2.0 + -(1.0));
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
PS0f = -(intBitsToFloat(uf_remappedPS[1].z)) + intBitsToFloat(uf_remappedPS[1].w);
|
||||||
|
// 1
|
||||||
|
R5f.x = (mul_nonIEEE(PV0f.z,PV0f.x) + R5f.z);
|
||||||
|
R5f.y = (mul_nonIEEE(PV0f.y,PV0f.w) + R5f.w);
|
||||||
|
R3f.z = R0f.x + -(R1f.x);
|
||||||
|
R5f.w = R0f.y + -(R1f.y);
|
||||||
|
R6f.y = 1.0 / PS0f;
|
||||||
|
PS1f = R6f.y;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,-0.0),vec4(R2f.x,R2f.y,R2f.z,0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
R9f.x = backupReg0f + -(R1f.z);
|
||||||
|
PS0f = R9f.x;
|
||||||
|
// 3
|
||||||
|
tempResultf = 1.0 / sqrt(PV0f.x);
|
||||||
|
R5f.z = tempResultf;
|
||||||
|
PS1f = R5f.z;
|
||||||
|
R8f.xyzw = (texture(textureUnitPS1, R5f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R2f.x, R5f.z);
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, R5f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, R5f.z);
|
||||||
|
PV0f.w = mul_nonIEEE(R8f.w, R6f.x);
|
||||||
|
R127f.z = R8f.x * 1.0;
|
||||||
|
PS0f = R127f.z;
|
||||||
|
// 1
|
||||||
|
tempf.x = dot(vec4(R7f.x,R7f.y,R7f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
PS1f = mul_nonIEEE(R4f.w, PV0f.w);
|
||||||
|
// 2
|
||||||
|
PV0f.x = max(PV1f.x, -(PV1f.x));
|
||||||
|
R127f.y = mul_nonIEEE(R0f.w, PS1f);
|
||||||
|
R127f.y = clamp(R127f.y, 0.0, 1.0);
|
||||||
|
PV0f.z = R8f.y * 1.0;
|
||||||
|
PV0f.w = R8f.z * 1.0;
|
||||||
|
R122f.x = (mul_nonIEEE(R3f.z,R127f.z) + R1f.x);
|
||||||
|
PS0f = R122f.x;
|
||||||
|
// 3
|
||||||
|
R123f.x = (mul_nonIEEE(R9f.x,PV0f.w) + R1f.z);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.z = (mul_nonIEEE(R5f.w,PV0f.z) + R1f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = PV0f.x + -(intBitsToFloat(uf_remappedPS[1].z));
|
||||||
|
R1f.x = mul_nonIEEE(R4f.x, PS0f);
|
||||||
|
PS1f = R1f.x;
|
||||||
|
// 4
|
||||||
|
PV0f.x = PV1f.w * R6f.y;
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
R1f.y = mul_nonIEEE(R4f.y, PV1f.z);
|
||||||
|
R1f.z = mul_nonIEEE(R4f.z, PV1f.x);
|
||||||
|
// 5
|
||||||
|
R123f.z = (intBitsToFloat(0xc0000000) * PV0f.x + intBitsToFloat(0x40400000));
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
// 6
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.w, PV1f.z);
|
||||||
|
// 7
|
||||||
|
PV1f.x = mul_nonIEEE(R127f.y, PV0f.y);
|
||||||
|
// 8
|
||||||
|
R1f.w = mul_nonIEEE(R3f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R1f.x, R1f.y, R1f.z, R1f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,189 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 5f4e60117b59cf65
|
||||||
|
// Sheikah Tower - inactive + Shrine
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0x337db000 res 256x1024x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0x337f3000 res 128x512x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0x337e7000 res 256x1024x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem6;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R122f = 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 = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem6;
|
||||||
|
R5f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R0f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R0f.xyz = (texture(textureUnitPS3, R0f.xy).xyz);
|
||||||
|
// 0
|
||||||
|
R126f.x = (R5f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R126f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
R127f.w = (R5f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R127f.x = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.y);
|
||||||
|
R127f.y = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.z);
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R126f.w = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.w);
|
||||||
|
R122f.x = (mul_nonIEEE(-(R4f.z),intBitsToFloat(uf_remappedPS[0].x)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R122f.x = clamp(R122f.x, 0.0, 1.0);
|
||||||
|
PS1f = R122f.x;
|
||||||
|
// 2
|
||||||
|
R125f.x = R5f.z * intBitsToFloat(0x427f0000);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.w,R127f.w) + PV1f.z);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.w, R127f.w);
|
||||||
|
R127f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),PS1f) + 1.0);
|
||||||
|
PV0f.w = R127f.w;
|
||||||
|
R5f.x = mul_nonIEEE(R1f.x, R0f.x);
|
||||||
|
PS0f = R5f.x;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = -(PV0f.y) + 1.0;
|
||||||
|
PV1f.y = mul_nonIEEE(backupReg0f, PV0f.z);
|
||||||
|
PV1f.z = mul_nonIEEE(R127f.y, PV0f.z);
|
||||||
|
PV1f.w = mul_nonIEEE(R126f.w, PV0f.z);
|
||||||
|
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.w);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
R126f.x = (mul_nonIEEE(R3f.z,backupReg0f) + PV1f.w)/2.0;
|
||||||
|
R127f.y = (mul_nonIEEE(R3f.y,backupReg0f) + PV1f.z)/2.0;
|
||||||
|
R126f.z = (mul_nonIEEE(R3f.x,backupReg0f) + PV1f.y)/2.0;
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y), R127f.w);
|
||||||
|
PS0f = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z), R127f.w);
|
||||||
|
// 5
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
backupReg1f = R127f.x;
|
||||||
|
R127f.x = floor(R125f.x);
|
||||||
|
R127f.x *= 4.0;
|
||||||
|
R126f.y = mul_nonIEEE(R0f.w, PS0f);
|
||||||
|
PV1f.z = mul_nonIEEE(R0f.w, R127f.z);
|
||||||
|
PV1f.w = mul_nonIEEE(backupReg0f, PV0f.w);
|
||||||
|
PS1f = sqrt(backupReg1f);
|
||||||
|
PS1f /= 2.0;
|
||||||
|
// 6
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg1f = R2f.y;
|
||||||
|
backupReg2f = R126f.z;
|
||||||
|
R126f.x = (mul_nonIEEE(R2f.z,PS1f) + backupReg0f);
|
||||||
|
R2f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w), PV1f.w);
|
||||||
|
R126f.z = (mul_nonIEEE(backupReg1f,PS1f) + R127f.y);
|
||||||
|
R127f.w = (mul_nonIEEE(R2f.x,PS1f) + backupReg2f);
|
||||||
|
R2f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w), PV1f.z);
|
||||||
|
PS0f = R2f.x;
|
||||||
|
// 7
|
||||||
|
backupReg0f = R1f.x;
|
||||||
|
backupReg0f = R1f.x;
|
||||||
|
R1f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R5f.y = mul_nonIEEE(backupReg0f, R0f.y);
|
||||||
|
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w), R126f.y);
|
||||||
|
R1f.w = 1.0;
|
||||||
|
R5f.z = mul_nonIEEE(backupReg0f, R0f.z);
|
||||||
|
PS1f = R5f.z;
|
||||||
|
// 8
|
||||||
|
R0f.x = R127f.w + 0.5;
|
||||||
|
R1f.y = intBitsToFloat(uf_remappedPS[2].z);
|
||||||
|
R0f.z = R126f.x + 0.5;
|
||||||
|
R2f.w = 1.0;
|
||||||
|
R0f.y = R126f.z + 0.5;
|
||||||
|
PS0f = R0f.y;
|
||||||
|
// 9
|
||||||
|
R5f.w = intBitsToFloat(0x3b808081);
|
||||||
|
R0f.w = (R127f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
PS1f = R0f.w;
|
||||||
|
// 10
|
||||||
|
R9f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R9f.w = R2f.w;
|
||||||
|
// 11
|
||||||
|
R8f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R8f.w = R0f.w;
|
||||||
|
// 12
|
||||||
|
R7f.xyz = vec3(R5f.x,R5f.y,R5f.z);
|
||||||
|
R7f.w = R5f.w;
|
||||||
|
// 13
|
||||||
|
R6f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R6f.w = R1f.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor1 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor3 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
passPixelColor5 = vec4(R9f.x, R9f.y, R9f.z, R9f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,101 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 603d7ad06d86617e
|
||||||
|
// Teleportation - part 2
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x216a1000 res 64x64x1 dim 1 tm: 4 format 0001 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x211a9000 res 32x64x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem7;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem7;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
|
||||||
|
R3f.xyzw = (texture(textureUnitPS1, R3f.zw).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV0f.x = mul_nonIEEE(R4f.y, R4f.y);
|
||||||
|
R123f.y = (mul_nonIEEE(R4f.w,R3f.w) + -(R0f.w));
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(R4f.x, R4f.x);
|
||||||
|
PV0f.w = mul_nonIEEE(R4f.z, R4f.z);
|
||||||
|
R127f.x = backupReg0f + -(R1f.x);
|
||||||
|
PS0f = R127f.x;
|
||||||
|
// 1
|
||||||
|
PV1f.x = mul_nonIEEE(R1f.w, PV0f.y);
|
||||||
|
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
|
||||||
|
R127f.y = mul_nonIEEE(PV0f.w, R3f.z);
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, R3f.y);
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.z, R3f.x);
|
||||||
|
PS1f = R0f.y + -(R1f.y);
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
R0f.x = (mul_nonIEEE(R127f.x,PV1f.w) + R1f.x);
|
||||||
|
R0f.y = (mul_nonIEEE(PS1f,PV1f.z) + R1f.y);
|
||||||
|
PV0f.z = backupReg0f + -(R1f.z);
|
||||||
|
R0f.w = mul_nonIEEE(R2f.x, PV1f.x);
|
||||||
|
// 3
|
||||||
|
R0f.z = (mul_nonIEEE(PV0f.z,R127f.y) + R1f.z);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,219 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 6240983542445009
|
||||||
|
// Shrine - bulbs
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb74c5000 res 512x512x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb74ef000 res 256x256x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb74e6000 res 256x256x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xb75c0000 res 84x64x1 dim 1 tm: 4 format 0034 compSel: 0 4 4 4 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem6;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem5;
|
||||||
|
layout(location = 5) in vec4 passParameterSem7;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R122f = 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 = passParameterSem6;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem5;
|
||||||
|
R5f = passParameterSem7;
|
||||||
|
R7f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R6f.xyz = (texture(textureUnitPS5, R0f.xy).xyz);
|
||||||
|
R0f.w = (texture(textureUnitPS7, R5f.xy).x);
|
||||||
|
R5f.xyzw = (texture(textureUnitPS3, R0f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
R126f.z = (R7f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.z = R126f.z;
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
R127f.w = (R7f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R127f.x = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.w);
|
||||||
|
PV1f.y = mul_nonIEEE(PV0f.z, PV0f.z);
|
||||||
|
R127f.z = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.y);
|
||||||
|
R126f.w = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.x);
|
||||||
|
R127f.y = mul_nonIEEE(R3f.w, PS0f);
|
||||||
|
PS1f = R127f.y;
|
||||||
|
// 2
|
||||||
|
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,-0.0),vec4(R1f.x,R1f.y,R1f.z,0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
R122f.x = (mul_nonIEEE(R127f.w,R127f.w) + PV1f.y);
|
||||||
|
R122f.x = clamp(R122f.x, 0.0, 1.0);
|
||||||
|
PS0f = R122f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.x = mul_nonIEEE(R126f.w, R127f.y);
|
||||||
|
PV1f.y = mul_nonIEEE(R127f.z, R127f.y);
|
||||||
|
R127f.z = -(PS0f) + 1.0;
|
||||||
|
PV1f.w = mul_nonIEEE(R127f.x, R127f.y);
|
||||||
|
PS1f = sqrt(PV0f.x);
|
||||||
|
// 4
|
||||||
|
R127f.x = (mul_nonIEEE(R3f.y,R126f.z) + PV1f.y);
|
||||||
|
R127f.y = (mul_nonIEEE(R3f.x,R126f.z) + PV1f.x);
|
||||||
|
R125f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R6f.x);
|
||||||
|
R126f.w = (mul_nonIEEE(R3f.z,R126f.z) + PV1f.w);
|
||||||
|
PS0f = 1.0 / PS1f;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R127f.z;
|
||||||
|
R126f.x = mul_nonIEEE(R1f.x, PS0f);
|
||||||
|
R126f.y = mul_nonIEEE(R1f.y, PS0f);
|
||||||
|
R127f.z = mul_nonIEEE(R1f.z, PS0f);
|
||||||
|
R127f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R6f.y);
|
||||||
|
PS1f = sqrt(backupReg0f);
|
||||||
|
// 6
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = (mul_nonIEEE(R2f.x,PS1f) + R127f.y);
|
||||||
|
PV0f.x = R127f.x;
|
||||||
|
R125f.y = (mul_nonIEEE(R2f.y,PS1f) + backupReg0f);
|
||||||
|
PV0f.y = R125f.y;
|
||||||
|
R126f.z = (mul_nonIEEE(R2f.z,PS1f) + R126f.w);
|
||||||
|
PV0f.z = R126f.z;
|
||||||
|
R126f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), R6f.z);
|
||||||
|
R127f.y = R7f.z * intBitsToFloat(0x427f0000);
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 7
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
tempf.x = dot(vec4(R126f.x,R126f.y,R127f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
R127f.z = mul_nonIEEE(R4f.x, backupReg0f);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 8
|
||||||
|
R126f.x = floor(R127f.y);
|
||||||
|
R126f.x *= 4.0;
|
||||||
|
PV0f.y = PV1f.x + 1.0;
|
||||||
|
PV0f.y = clamp(PV0f.y, 0.0, 1.0);
|
||||||
|
R4f.z = mul_nonIEEE(R5f.z, PS1f);
|
||||||
|
R2f.w = R5f.w;
|
||||||
|
R4f.x = mul_nonIEEE(R5f.x, PS1f);
|
||||||
|
PS0f = R4f.x;
|
||||||
|
// 9
|
||||||
|
R125f.x = -(PV0f.y) + 1.0;
|
||||||
|
R4f.y = mul_nonIEEE(R5f.y, R127f.z);
|
||||||
|
R2f.z = intBitsToFloat(0x3c808081);
|
||||||
|
R5f.w = 1.0;
|
||||||
|
R2f.y = intBitsToFloat(uf_remappedPS[1].z);
|
||||||
|
PS1f = R2f.y;
|
||||||
|
// 10
|
||||||
|
R0f.x = (R127f.x * 0.5 + 0.5);
|
||||||
|
R0f.y = (R125f.y * 0.5 + 0.5);
|
||||||
|
R0f.z = (R126f.z * 0.5 + 0.5);
|
||||||
|
R4f.w = intBitsToFloat(0x3b808081);
|
||||||
|
R0f.w = (R126f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
PS0f = R0f.w;
|
||||||
|
// 11
|
||||||
|
tempResultf = log2(R125f.x);
|
||||||
|
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
|
||||||
|
PS1f = tempResultf;
|
||||||
|
// 12
|
||||||
|
PV0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z), PS1f);
|
||||||
|
// 13
|
||||||
|
PS1f = exp2(PV0f.z);
|
||||||
|
PS1f = clamp(PS1f, 0.0, 1.0);
|
||||||
|
// 14
|
||||||
|
PV0f.x = intBitsToFloat(uf_remappedPS[2].w) + PS1f;
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
// 15
|
||||||
|
PV1f.x = mul_nonIEEE(PV0f.x, R125f.z);
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, R126f.w);
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.x, R127f.w);
|
||||||
|
// 16
|
||||||
|
R5f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x), PV1f.x);
|
||||||
|
PV0f.x = R5f.x;
|
||||||
|
R5f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x), PV1f.w);
|
||||||
|
PV0f.y = R5f.y;
|
||||||
|
R5f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x), PV1f.z);
|
||||||
|
PV0f.z = R5f.z;
|
||||||
|
// 17
|
||||||
|
R8f.xyz = vec3(PV0f.x,PV0f.y,PV0f.z);
|
||||||
|
R8f.w = R5f.w;
|
||||||
|
// 18
|
||||||
|
R7f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R7f.w = R0f.w;
|
||||||
|
// 19
|
||||||
|
R6f.xyz = vec3(R4f.x,R4f.y,R4f.z);
|
||||||
|
R6f.w = R4f.w;
|
||||||
|
// 20
|
||||||
|
R5f.xyz = vec3(R2f.z,R2f.y,R2f.z);
|
||||||
|
R5f.w = R2f.w;
|
||||||
|
// export
|
||||||
|
if( ((vec4(R5f.x, R5f.y, R5f.z, R5f.w)).a >= uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||||
|
passPixelColor1 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor3 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor5 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,128 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 64342503518ca97a
|
||||||
|
// Shrine - ending
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[1];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21106000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fc9000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x21103000 res 4x64x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem7;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 5) in vec4 passParameterSem9;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem7;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R5f = passParameterSem9;
|
||||||
|
R6f.xw = (texture(textureUnitPS0, R4f.xy).xw);
|
||||||
|
R5f.xyzw = (texture(textureUnitPS2, R5f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
R123f.x = (R6f.w * 2.0 + -(1.0));
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, intBitsToFloat(uf_remappedPS[0].y));
|
||||||
|
R123f.z = (R6f.x * 2.0 + -(1.0));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.y, intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
R2f.z = mul_nonIEEE(R5f.x, R5f.x);
|
||||||
|
PS0f = R2f.z;
|
||||||
|
// 1
|
||||||
|
R4f.x = (mul_nonIEEE(PV0f.w,PV0f.z) + R4f.z);
|
||||||
|
R4f.y = (mul_nonIEEE(PV0f.y,PV0f.x) + R4f.w);
|
||||||
|
R4f.z = mul_nonIEEE(R5f.y, R5f.y);
|
||||||
|
R4f.w = mul_nonIEEE(R5f.z, R5f.z);
|
||||||
|
R1f.w = R0f.x + -(R1f.x);
|
||||||
|
PS1f = R1f.w;
|
||||||
|
R6f.xyzw = (texture(textureUnitPS1, R4f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = R6f.w + R5f.w;
|
||||||
|
R127f.y = (mul_nonIEEE(R6f.z,R6f.z) + R4f.w);
|
||||||
|
R123f.z = (mul_nonIEEE(R6f.y,R6f.y) + R4f.z);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R6f.x,R6f.x) + R2f.z);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
PS0f = R0f.y + -(R1f.y);
|
||||||
|
// 1
|
||||||
|
PV1f.x = R0f.z + -(R1f.z);
|
||||||
|
PV1f.y = mul_nonIEEE(R3f.w, PV0f.x);
|
||||||
|
R123f.z = (mul_nonIEEE(R1f.w,PV0f.w) + R1f.x);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(PS0f,PV0f.z) + R1f.y);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(R0f.w, PV1f.y);
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
R0f.y = mul_nonIEEE(R3f.y, PV1f.w);
|
||||||
|
R123f.z = (mul_nonIEEE(PV1f.x,R127f.y) + R1f.z);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R0f.x = mul_nonIEEE(R3f.x, PV1f.z);
|
||||||
|
PS0f = R0f.x;
|
||||||
|
// 3
|
||||||
|
R0f.z = mul_nonIEEE(R3f.z, PV0f.z);
|
||||||
|
R0f.w = mul_nonIEEE(R2f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,116 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 6832b00344c32a71
|
||||||
|
// Shrine - ending back wall
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21103000 res 4x64x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x21103000 res 4x64x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem7;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R122f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem7;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R5f.xyzw = (texture(textureUnitPS0, R4f.xy).xyzw);
|
||||||
|
R4f.xyzw = (texture(textureUnitPS1, R4f.zw).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R5f.w, R4f.w);
|
||||||
|
PV0f.y = mul_nonIEEE(R5f.x, R5f.x);
|
||||||
|
R127f.z = mul_nonIEEE(R5f.y, R5f.y);
|
||||||
|
R127f.w = mul_nonIEEE(R5f.z, R5f.z);
|
||||||
|
PS0f = mul_nonIEEE(R4f.x, R4f.x);
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV1f.x = mul_nonIEEE(R4f.z, R4f.z);
|
||||||
|
PV1f.y = mul_nonIEEE(R4f.y, R4f.y);
|
||||||
|
R126f.z = mul_nonIEEE(R3f.w, PV0f.x);
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.y, PS0f);
|
||||||
|
PS1f = backupReg0f + -(R1f.x);
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
PV0f.x = R0f.y + -(R1f.y);
|
||||||
|
PV0f.y = mul_nonIEEE(R127f.w, PV1f.x);
|
||||||
|
PV0f.z = mul_nonIEEE(R127f.z, PV1f.y);
|
||||||
|
PV0f.w = backupReg0f + -(R1f.z);
|
||||||
|
R122f.x = (mul_nonIEEE(PS1f,PV1f.w) + R1f.x);
|
||||||
|
PS0f = R122f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.x = mul_nonIEEE(R0f.w, R126f.z);
|
||||||
|
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
|
||||||
|
R123f.z = (mul_nonIEEE(PV0f.w,PV0f.y) + R1f.z);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(PV0f.x,PV0f.z) + R1f.y);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
R0f.x = mul_nonIEEE(R3f.x, PS0f);
|
||||||
|
PS1f = R0f.x;
|
||||||
|
// 4
|
||||||
|
R0f.y = mul_nonIEEE(R3f.y, PV1f.w);
|
||||||
|
R0f.z = mul_nonIEEE(R3f.z, PV1f.z);
|
||||||
|
R0f.w = mul_nonIEEE(R2f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,153 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 687da8c1b555b262
|
||||||
|
// Bomb - explosion sphere + distorsion
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[1];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21106000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fd4000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x210b5000 res 200x200x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xf45c6000 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem7;
|
||||||
|
layout(location = 5) in vec4 passParameterSem8;
|
||||||
|
layout(location = 6) in vec4 passParameterSem9;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec4 R0f = vec4(0.0);
|
||||||
|
vec4 R1f = vec4(0.0);
|
||||||
|
vec4 R2f = vec4(0.0);
|
||||||
|
vec4 R3f = vec4(0.0);
|
||||||
|
vec4 R4f = vec4(0.0);
|
||||||
|
vec4 R5f = vec4(0.0);
|
||||||
|
vec4 R6f = vec4(0.0);
|
||||||
|
vec4 R7f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem7;
|
||||||
|
R5f = passParameterSem8;
|
||||||
|
R6f = passParameterSem9;
|
||||||
|
R7f.xyw = (texture(textureUnitPS0, R5f.xy).xyw);
|
||||||
|
R5f.w = (texture(textureUnitPS1, R5f.zw).w);
|
||||||
|
R5f.z = (texture(textureUnitPS2, R6f.xy).w);
|
||||||
|
// 0
|
||||||
|
R123f.x = (R7f.y * 2.0 + -(1.0));
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
R123f.y = (R7f.x * 2.0 + -(1.0));
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
R127f.z = mul_nonIEEE(R3f.y, intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
R127f.w = mul_nonIEEE(R3f.y, intBitsToFloat(uf_remappedPS[0].y));
|
||||||
|
PS0f = 0.0;
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV1f.x = R2f.w + PS0f;
|
||||||
|
PV1f.y = R5f.w * 1.0;
|
||||||
|
PV1f.z = PV0f.x * intBitsToFloat(0x41c80000);
|
||||||
|
PV1f.w = PV0f.y * intBitsToFloat(0x41c80000);
|
||||||
|
R5f.w = backupReg0f + -(R1f.x);
|
||||||
|
PS1f = R5f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.w, R127f.z);
|
||||||
|
PV0f.y = mul_nonIEEE(R5f.z, PV1f.y);
|
||||||
|
PV0f.z = mul_nonIEEE(PV1f.z, R127f.w);
|
||||||
|
R3f.w = backupReg0f + -(R1f.y);
|
||||||
|
R127f.w = 1.0 / PV1f.x;
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 3
|
||||||
|
PV1f.x = mul_nonIEEE(R7f.w, PV0f.z);
|
||||||
|
PV1f.y = mul_nonIEEE(R7f.w, PV0f.x);
|
||||||
|
R123f.z = (mul_nonIEEE(R4f.w,PV0f.y) + -(R0f.w));
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R0f.w = R0f.z + -(R1f.z);
|
||||||
|
// 4
|
||||||
|
PV0f.x = R2f.y + PV1f.x;
|
||||||
|
PV0f.y = R2f.x + PV1f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(R1f.w, PV1f.z);
|
||||||
|
PV0f.z = clamp(PV0f.z, 0.0, 1.0);
|
||||||
|
// 5
|
||||||
|
backupReg0f = R3f.x;
|
||||||
|
R3f.x = mul_nonIEEE(PV0f.y, R127f.w);
|
||||||
|
R3f.y = mul_nonIEEE(PV0f.x, R127f.w);
|
||||||
|
R2f.w = mul_nonIEEE(backupReg0f, PV0f.z);
|
||||||
|
R3f.xyz = (texture(textureUnitPS3, R3f.xy).xyz);
|
||||||
|
vec3 colhsv = rgb2hsv(R3f.rgb); // inverse hue rotation
|
||||||
|
R3f.rgb = hsv2rgb(vec3(mod(colhsv.x - hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
R3f.a *= ALPHA_FACTOR;
|
||||||
|
// 0
|
||||||
|
PV0f.y = R3f.z * 1.0;
|
||||||
|
PV0f.z = R3f.y * 1.0;
|
||||||
|
PV0f.w = R3f.x * 1.0;
|
||||||
|
// 1
|
||||||
|
PV1f.y = PV0f.y * 1.0;
|
||||||
|
PV1f.z = PV0f.z * 1.0;
|
||||||
|
PV1f.w = PV0f.w * 1.0;
|
||||||
|
// 2
|
||||||
|
R123f.x = (mul_nonIEEE(R5f.w,PV1f.w) + R1f.x);
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
R123f.z = (mul_nonIEEE(R0f.w,PV1f.y) + R1f.z);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R3f.w,PV1f.z) + R1f.y);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
// 3
|
||||||
|
R2f.x = mul_nonIEEE(R4f.x, PV0f.x);
|
||||||
|
R2f.y = mul_nonIEEE(R4f.y, PV0f.w);
|
||||||
|
R2f.z = mul_nonIEEE(R4f.z, PV0f.z);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R2f.x, R2f.y, R2f.z, R2f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
|
||||||
|
colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,126 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 68aa37ce58db094d
|
||||||
|
// Bomb - appear effect center
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fd4000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R4f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R4f.y;
|
||||||
|
backupReg0f = R4f.y;
|
||||||
|
backupReg1f = R4f.x;
|
||||||
|
backupReg1f = R4f.x;
|
||||||
|
R4f.x = mul_nonIEEE(R0f.w, R4f.w);
|
||||||
|
R4f.x = clamp(R4f.x, 0.0, 1.0);
|
||||||
|
R4f.y = mul_nonIEEE(R4f.z, R4f.z);
|
||||||
|
R4f.z = mul_nonIEEE(backupReg0f, backupReg0f);
|
||||||
|
R127f.w = mul_nonIEEE(backupReg1f, backupReg1f);
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
backupReg1f = R0f.z;
|
||||||
|
backupReg2f = R0f.y;
|
||||||
|
PV1f.x = backupReg0f + -(R1f.x);
|
||||||
|
PV1f.y = R2f.z * PS0f;
|
||||||
|
R0f.z = backupReg1f + -(R1f.z);
|
||||||
|
R0f.w = backupReg2f + -(R1f.y);
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R2f.x;
|
||||||
|
backupReg1f = R2f.y;
|
||||||
|
R2f.x = mul_nonIEEE(backupReg0f, PS1f);
|
||||||
|
R2f.y = mul_nonIEEE(backupReg1f, PS1f);
|
||||||
|
R2f.z = (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[0].w)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R5f.x = (mul_nonIEEE(PV1f.x,R127f.w) + R1f.x);
|
||||||
|
PS0f = R5f.x;
|
||||||
|
R2f.x = (texture(textureUnitPS4, R2f.xy).x);
|
||||||
|
// 0
|
||||||
|
R127f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R2f.x) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
R5f.y = (mul_nonIEEE(R0f.w,R4f.z) + R1f.y);
|
||||||
|
PS0f = 1.0 / R2f.z;
|
||||||
|
// 1
|
||||||
|
PV1f.y = -(intBitsToFloat(uf_remappedPS[0].z)) * PS0f;
|
||||||
|
R5f.z = (mul_nonIEEE(R0f.z,R4f.y) + R1f.z);
|
||||||
|
R127f.z = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 2
|
||||||
|
PV0f.w = -(PV1f.y) + R127f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.y = PV0f.w * R127f.z;
|
||||||
|
PV1f.y = clamp(PV1f.y, 0.0, 1.0);
|
||||||
|
// 4
|
||||||
|
PV0f.x = mul_nonIEEE(R4f.x, PV1f.y);
|
||||||
|
// 5
|
||||||
|
R5f.w = mul_nonIEEE(R3f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R5f.x, R5f.y, R5f.z, R5f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,189 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 70a79265ab7d498a
|
||||||
|
// Electric balls
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[4];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb639d000 res 256x256x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb63b8000 res 256x256x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb63a6000 res 256x256x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xb63af000 res 256x256x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 8) uniform sampler2D textureUnitPS8;// Tex8 addr 0xb639b000 res 128x4x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler8 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem5;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem5;
|
||||||
|
R5f.xy = (texture(textureUnitPS6, R0f.xy).xy);
|
||||||
|
R6f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R1f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R8f.xyzw = (texture(textureUnitPS3, R0f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
R0f.x = (R6f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R0f.x;
|
||||||
|
R127f.y = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
R123f.z = (R5f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (R5f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
R127f.z = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
PS0f = R127f.z;
|
||||||
|
// 1
|
||||||
|
backupReg0f = R1f.x;
|
||||||
|
backupReg1f = R1f.y;
|
||||||
|
R1f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x),PV0f.w) + backupReg0f);
|
||||||
|
R1f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),PV0f.z) + backupReg1f);
|
||||||
|
PV1f.z = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
R123f.w = (R6f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
// 2
|
||||||
|
R5f.x = (mul_nonIEEE(-(R3f.y),R2f.z) + R127f.y);
|
||||||
|
R5f.y = (mul_nonIEEE(PV1f.w,PV1f.w) + PS1f);
|
||||||
|
R5f.y = clamp(R5f.y, 0.0, 1.0);
|
||||||
|
R0f.z = (mul_nonIEEE(-(R3f.x),R2f.y) + PV1f.z);
|
||||||
|
R0f.w = (mul_nonIEEE(-(R3f.z),R2f.x) + R127f.z);
|
||||||
|
R1f.z = mul_nonIEEE(R3f.w, PV1f.w);
|
||||||
|
PS0f = R1f.z;
|
||||||
|
R7f.xyz = (texture(textureUnitPS8, R1f.xy).xyz);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
R127f.x = -(R5f.y) + 1.0;
|
||||||
|
PV0f.y = mul_nonIEEE(R5f.x, R1f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R0f.w, R1f.z);
|
||||||
|
PV0f.w = mul_nonIEEE(backupReg0f, R1f.z);
|
||||||
|
R127f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R1f.w);
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R126f.x = (mul_nonIEEE(R3f.z,R0f.x) + PV0f.w)/2.0;
|
||||||
|
R127f.y = (mul_nonIEEE(R3f.y,R0f.x) + PV0f.z)/2.0;
|
||||||
|
R127f.z = (mul_nonIEEE(R3f.x,R0f.x) + PV0f.y)/2.0;
|
||||||
|
PV1f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y), R1f.w);
|
||||||
|
PS1f = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z), R1f.w);
|
||||||
|
// 2
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x), PS1f);
|
||||||
|
PV0f.y = R6f.z * intBitsToFloat(0x427f0000);
|
||||||
|
PV0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x), R127f.w);
|
||||||
|
R127f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x), PV1f.w);
|
||||||
|
PS0f = sqrt(backupReg0f);
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg1f = R127f.y;
|
||||||
|
backupReg2f = R127f.z;
|
||||||
|
R126f.x = (mul_nonIEEE(R2f.z,PS0f) + backupReg0f);
|
||||||
|
R127f.y = floor(PV0f.y);
|
||||||
|
R127f.y *= 4.0;
|
||||||
|
R127f.z = (mul_nonIEEE(R2f.y,PS0f) + backupReg1f);
|
||||||
|
R126f.w = (mul_nonIEEE(R2f.x,PS0f) + backupReg2f);
|
||||||
|
R2f.x = mul_nonIEEE(R7f.x, PV0f.z);
|
||||||
|
PS1f = R2f.x;
|
||||||
|
// 4
|
||||||
|
R7f.x = mul_nonIEEE(R4f.x, R8f.x);
|
||||||
|
R2f.y = mul_nonIEEE(R7f.y, R127f.w);
|
||||||
|
R2f.z = mul_nonIEEE(R7f.z, R127f.x);
|
||||||
|
R6f.w = R8f.w;
|
||||||
|
R7f.y = mul_nonIEEE(R4f.x, R8f.y);
|
||||||
|
PS0f = R7f.y;
|
||||||
|
// 5
|
||||||
|
R6f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R6f.y = intBitsToFloat(uf_remappedPS[3].z);
|
||||||
|
R7f.z = mul_nonIEEE(R4f.x, R8f.z);
|
||||||
|
R2f.w = 1.0;
|
||||||
|
R4f.x = R126f.w + 0.5;
|
||||||
|
PS1f = R4f.x;
|
||||||
|
// 6
|
||||||
|
R4f.y = R127f.z + 0.5;
|
||||||
|
R4f.z = R126f.x + 0.5;
|
||||||
|
R7f.w = intBitsToFloat(0x3b808081);
|
||||||
|
R4f.w = (R127f.y * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
PS0f = R4f.w;
|
||||||
|
// 7
|
||||||
|
R3f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R3f.w = R2f.w;
|
||||||
|
// 8
|
||||||
|
R2f.xyz = vec3(R4f.x,R4f.y,R4f.z);
|
||||||
|
R2f.w = R4f.w;
|
||||||
|
// 9
|
||||||
|
R1f.xyz = vec3(R7f.x,R7f.y,R7f.z);
|
||||||
|
R1f.w = R7f.w;
|
||||||
|
// 10
|
||||||
|
R0f.xyz = vec3(R6f.x,R6f.y,R6f.z);
|
||||||
|
R0f.w = R6f.w;
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a >= uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
passPixelColor1 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
passPixelColor3 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
|
||||||
|
passPixelColor5 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,93 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 70d96b85a0ce93ef
|
||||||
|
// Shrine - ending - field shatter effect particle
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x211a9000 res 32x64x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x214e1000 res 64x400x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 1 1 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem7;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem7;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R2f.w = (texture(textureUnitPS0, R4f.xy).w);
|
||||||
|
R4f.z = (texture(textureUnitPS1, R4f.zw).w);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
R4f.x = mul_nonIEEE(R0f.x, R3f.x);
|
||||||
|
R4f.y = mul_nonIEEE(R0f.y, R3f.y);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.w, R4f.z);
|
||||||
|
R4f.z = mul_nonIEEE(backupReg0f, R3f.z);
|
||||||
|
PS0f = R4f.z;
|
||||||
|
// 1
|
||||||
|
R123f.y = (mul_nonIEEE(R3f.w,PV0f.z) + -(R0f.w));
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(R1f.w, PV1f.y);
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
// 3
|
||||||
|
R4f.w = mul_nonIEEE(R2f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R4f.x, R4f.y, R4f.z, R4f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,252 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 751393d6cbcd0c76
|
||||||
|
// Shrine - walls 2
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb119e000 res 1024x1024x1 dim 1 tm: 4 format 0433 compSel: 0 1 2 3 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb129f000 res 512x512x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb10e6000 res 1024x1024x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xb1179000 res 512x512x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xb09e5000 res 4012x2048x1 dim 1 tm: 4 format 0034 compSel: 0 4 4 4 mipView: 0x0 (num 0xc) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 0
|
||||||
|
layout(binding = 8) uniform sampler2D textureUnitPS8;// Tex8 addr 0xb1168000 res 256x256x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler8 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem7;
|
||||||
|
layout(location = 3) in vec4 passParameterSem3;
|
||||||
|
layout(location = 4) in vec4 passParameterSem4;
|
||||||
|
layout(location = 5) in vec4 passParameterSem5;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = 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 = passParameterSem1;
|
||||||
|
R2f = passParameterSem7;
|
||||||
|
R3f = passParameterSem3;
|
||||||
|
R4f = passParameterSem4;
|
||||||
|
R5f = passParameterSem5;
|
||||||
|
R6f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R7f.xyz = (texture(textureUnitPS6, R1f.xy).xyz);
|
||||||
|
R8f.xyzw = (texture(textureUnitPS3, R0f.xy).xyzw);
|
||||||
|
R9f.xyz = (texture(textureUnitPS5, R1f.xy).xyz);
|
||||||
|
R0f.w = (texture(textureUnitPS8, R0f.xy).x);
|
||||||
|
R2f.y = (texture(textureUnitPS7, R2f.xy).x);
|
||||||
|
R1f.w = (texture(textureUnitPS8, R1f.zw).w);
|
||||||
|
// 0
|
||||||
|
R127f.x = (R7f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R127f.x;
|
||||||
|
R124f.y = (R6f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.y = R124f.y;
|
||||||
|
R127f.z = (R6f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.z = R127f.z;
|
||||||
|
R123f.w = (R7f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
R127f.y = -(R5f.w) + 1.0;
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 1
|
||||||
|
PV1f.x = R8f.w + -(1.0);
|
||||||
|
R126f.y = -(PV0f.z) + PV0f.w;
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.w, PV0f.w);
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.z, PV0f.z);
|
||||||
|
R125f.y = -(PV0f.y) + PV0f.x;
|
||||||
|
PS1f = R125f.y;
|
||||||
|
// 2
|
||||||
|
R123f.x = (mul_nonIEEE(R124f.y,R124f.y) + PV1f.w);
|
||||||
|
R123f.x = clamp(R123f.x, 0.0, 1.0);
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.x,R127f.x) + PV1f.z);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.y, R4f.z);
|
||||||
|
R125f.w = (mul_nonIEEE(PV1f.x,R127f.y) + 1.0);
|
||||||
|
PV0f.w = R125f.w;
|
||||||
|
R127f.w = mul_nonIEEE(R3f.z, R4f.x);
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 3
|
||||||
|
R127f.x = mul_nonIEEE(R3f.x, R4f.y);
|
||||||
|
R127f.y = -(PV0f.w) + 1.0;
|
||||||
|
PV1f.y = R127f.y;
|
||||||
|
PV1f.z = -(PV0f.x) + 1.0;
|
||||||
|
R126f.w = -(PV0f.y) + 1.0;
|
||||||
|
R1f.z = (mul_nonIEEE(-(R4f.y),R3f.z) + PV0f.z);
|
||||||
|
PS1f = R1f.z;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R127f.w;
|
||||||
|
R126f.x = (mul_nonIEEE(R126f.y,PV1f.y) + R127f.z);
|
||||||
|
R1f.y = (mul_nonIEEE(R125f.y,PV1f.y) + R124f.y);
|
||||||
|
R127f.z = R8f.x + -(R9f.x);
|
||||||
|
R127f.w = (mul_nonIEEE(-(R4f.z),R3f.x) + backupReg0f);
|
||||||
|
R126f.y = sqrt(PV1f.z);
|
||||||
|
PS0f = R126f.y;
|
||||||
|
// 5
|
||||||
|
PV1f.x = R6f.z + -(R7f.z);
|
||||||
|
R125f.y = R8f.y + -(R9f.y);
|
||||||
|
R126f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R0f.w);
|
||||||
|
R124f.w = (mul_nonIEEE(-(R4f.x),R3f.y) + R127f.x);
|
||||||
|
PS1f = sqrt(R126f.w);
|
||||||
|
// 6
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
PV0f.x = R8f.z + -(R9f.z);
|
||||||
|
R124f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.w);
|
||||||
|
R123f.z = (mul_nonIEEE(PV1f.x,R125f.w) + R7f.z);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
PV0f.w = -(R126f.y) + PS1f;
|
||||||
|
R125f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), backupReg0f);
|
||||||
|
PS0f = R125f.z;
|
||||||
|
// 7
|
||||||
|
backupReg0f = R127f.y;
|
||||||
|
backupReg1f = R127f.z;
|
||||||
|
R125f.x = (mul_nonIEEE(PV0f.x,R125f.w) + R9f.z);
|
||||||
|
R127f.y = PV0f.z * intBitsToFloat(0x427f0000);
|
||||||
|
R127f.z = (mul_nonIEEE(PV0f.w,backupReg0f) + R126f.y);
|
||||||
|
PV1f.z = R127f.z;
|
||||||
|
R126f.w = (mul_nonIEEE(backupReg1f,R125f.w) + R9f.x);
|
||||||
|
R7f.z = mul_nonIEEE(R5f.x, R2f.y);
|
||||||
|
PS1f = R7f.z;
|
||||||
|
// 8
|
||||||
|
tempf.x = dot(vec4(R126f.x,R1f.y,PV1f.z,-0.0),vec4(R126f.x,R1f.y,PV1f.z,0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
R124f.z = (mul_nonIEEE(R125f.y,R125f.w) + R9f.y);
|
||||||
|
PS0f = R124f.z;
|
||||||
|
// 9
|
||||||
|
R127f.x = (mul_nonIEEE(-(R125f.w),R124f.y) + R124f.y);
|
||||||
|
R123f.y = (mul_nonIEEE(-(R125f.w),R126f.z) + R126f.z);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
R126f.z = floor(R127f.y);
|
||||||
|
R126f.z *= 4.0;
|
||||||
|
R5f.w = 1.0;
|
||||||
|
tempResultf = 1.0 / sqrt(PV0f.x);
|
||||||
|
PS1f = tempResultf;
|
||||||
|
// 10
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
R126f.x = mul_nonIEEE(R127f.z, PS1f);
|
||||||
|
PV0f.y = mul_nonIEEE(R1f.y, PS1f);
|
||||||
|
R127f.z = mul_nonIEEE(backupReg0f, PS1f);
|
||||||
|
R123f.w = (mul_nonIEEE(-(R125f.w),R125f.z) + R125f.z);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
R9f.x = mul_nonIEEE(R1f.w, PV1f.y);
|
||||||
|
PS0f = R9f.x;
|
||||||
|
// 11
|
||||||
|
R2f.x = mul_nonIEEE(R126f.w, R7f.z);
|
||||||
|
R9f.y = mul_nonIEEE(R1f.w, R127f.x);
|
||||||
|
R9f.z = mul_nonIEEE(R1f.w, PV0f.w);
|
||||||
|
PV1f.w = mul_nonIEEE(R4f.w, PV0f.y);
|
||||||
|
R2f.y = mul_nonIEEE(R124f.z, R7f.z);
|
||||||
|
PS1f = R2f.y;
|
||||||
|
// 12
|
||||||
|
PV0f.x = mul_nonIEEE(R124f.w, PV1f.w);
|
||||||
|
PV0f.y = mul_nonIEEE(R127f.w, PV1f.w);
|
||||||
|
PV0f.z = mul_nonIEEE(R1f.z, PV1f.w);
|
||||||
|
R9f.w = 1.0;
|
||||||
|
R2f.z = mul_nonIEEE(R125f.x, R7f.z);
|
||||||
|
PS0f = R2f.z;
|
||||||
|
// 13
|
||||||
|
R5f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R123f.y = (mul_nonIEEE(R4f.z,R127f.z) + PV0f.x);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
R123f.z = (mul_nonIEEE(R4f.y,R127f.z) + PV0f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R4f.x,R127f.z) + PV0f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
R5f.y = intBitsToFloat(uf_remappedPS[1].z);
|
||||||
|
PS1f = R5f.y;
|
||||||
|
// 14
|
||||||
|
R123f.x = (mul_nonIEEE(R3f.x,R126f.x) + PV1f.w)/2.0;
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
R123f.z = (mul_nonIEEE(R3f.z,R126f.x) + PV1f.y)/2.0;
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R3f.y,R126f.x) + PV1f.z)/2.0;
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
R2f.w = intBitsToFloat(0x3b808081);
|
||||||
|
PS0f = R2f.w;
|
||||||
|
// 15
|
||||||
|
R3f.xyz = vec3(PV0f.x,PV0f.w,PV0f.z) + vec3(0.5,0.5,0.5);
|
||||||
|
R3f.w = (R126f.z * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
// 16
|
||||||
|
backupReg0f = R9f.x;
|
||||||
|
backupReg1f = R9f.y;
|
||||||
|
backupReg2f = R9f.z;
|
||||||
|
backupReg3f = R9f.w;
|
||||||
|
R9f.xyz = vec3(backupReg0f,backupReg1f,backupReg2f);
|
||||||
|
R9f.w = backupReg3f;
|
||||||
|
// 17
|
||||||
|
R8f.xyz = vec3(R3f.x,R3f.y,R3f.z);
|
||||||
|
R8f.w = R3f.w;
|
||||||
|
// 18
|
||||||
|
R7f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R7f.w = R2f.w;
|
||||||
|
// 19
|
||||||
|
R6f.xyz = vec3(R5f.x,R5f.y,R5f.z);
|
||||||
|
R6f.w = R5f.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor1 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor3 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
passPixelColor5 = vec4(R9f.x, R9f.y, R9f.z, R9f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,94 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 80b87385a0d2942f
|
||||||
|
// Bomp - appear effect circle 2
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x214e1000 res 64x400x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x214e1000 res 64x400x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 0 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem7;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem7;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R2f.w = (texture(textureUnitPS0, R4f.xy).w);
|
||||||
|
R4f.z = (texture(textureUnitPS1, R4f.zw).w);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
R4f.x = mul_nonIEEE(R0f.x, R3f.x);
|
||||||
|
R4f.y = mul_nonIEEE(R0f.y, R3f.y);
|
||||||
|
PV0f.z = R2f.w + R4f.z;
|
||||||
|
R4f.z = mul_nonIEEE(backupReg0f, R3f.z);
|
||||||
|
PS0f = R4f.z;
|
||||||
|
// 1
|
||||||
|
R123f.y = (mul_nonIEEE(R3f.w,PV0f.z) + -(R0f.w))*4.0;
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(R1f.w, PV1f.y);
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
// 3
|
||||||
|
R4f.w = mul_nonIEEE(R2f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R4f.x, R4f.y, R4f.z, R4f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,110 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 81adf9797e4661a7
|
||||||
|
// Shrine - ending glowing wall
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21282000 res 128x128x1 dim 1 tm: 4 format 0433 compSel: 0 1 2 3 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fc9000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem7;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem7;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R5f.xyzw = (texture(textureUnitPS0, R4f.xy).xyzw);
|
||||||
|
R4f.xyz = (texture(textureUnitPS1, R4f.zw).xyz);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV0f.x = mul_nonIEEE(R4f.z, R4f.z);
|
||||||
|
PV0f.y = mul_nonIEEE(R4f.y, R4f.y);
|
||||||
|
PV0f.z = mul_nonIEEE(R4f.x, R4f.x);
|
||||||
|
PV0f.w = R5f.w * 1.0;
|
||||||
|
R127f.w = backupReg0f + -(R1f.x);
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
PV1f.x = mul_nonIEEE(R3f.w, PV0f.w);
|
||||||
|
R127f.y = mul_nonIEEE(R5f.z, PV0f.x);
|
||||||
|
PV1f.z = mul_nonIEEE(R5f.y, PV0f.y);
|
||||||
|
PV1f.w = mul_nonIEEE(R5f.x, PV0f.z);
|
||||||
|
PS1f = R0f.y + -(R1f.y);
|
||||||
|
// 2
|
||||||
|
R123f.x = (mul_nonIEEE(R127f.w,PV1f.w) + R1f.x);
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
PV0f.y = R0f.z + -(R1f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R0f.w, PV1f.x);
|
||||||
|
PV0f.z = clamp(PV0f.z, 0.0, 1.0);
|
||||||
|
R123f.w = (mul_nonIEEE(PS1f,PV1f.z) + R1f.y);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
// 3
|
||||||
|
R1f.x = mul_nonIEEE(R3f.x, PV0f.x);
|
||||||
|
R1f.y = mul_nonIEEE(R3f.y, PV0f.w);
|
||||||
|
R123f.z = (mul_nonIEEE(PV0f.y,R127f.y) + R1f.z);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R1f.w = mul_nonIEEE(R2f.x, PV0f.z);
|
||||||
|
// 4
|
||||||
|
R1f.z = mul_nonIEEE(R3f.z, PV1f.z);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R1f.x, R1f.y, R1f.z, R1f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,79 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 8438998c284fe428
|
||||||
|
// Shrine - elevator particles 2
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x214d5000 res 128x64x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec4 R0f = vec4(0.0);
|
||||||
|
vec4 R1f = vec4(0.0);
|
||||||
|
vec4 R2f = vec4(0.0);
|
||||||
|
vec4 R3f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem8;
|
||||||
|
R2f.w = (texture(textureUnitPS0, R3f.xy).w);
|
||||||
|
// 0
|
||||||
|
PV0f.y = -(R0f.w) + R2f.w;
|
||||||
|
// 1
|
||||||
|
PV1f.x = mul_nonIEEE(R1f.w, PV0f.y);
|
||||||
|
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
|
||||||
|
// 2
|
||||||
|
R0f.w = mul_nonIEEE(R2f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,154 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 87790fa17c847fea
|
||||||
|
// Shrine - elevator field + distortion
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[1];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21106000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x21146000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xf45c6000 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem5;
|
||||||
|
layout(location = 5) in vec4 passParameterSem8;
|
||||||
|
layout(location = 6) in vec4 passParameterSem12;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R125f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem5;
|
||||||
|
R5f = passParameterSem8;
|
||||||
|
R6f = passParameterSem12;
|
||||||
|
R4f.xw = (texture(textureUnitPS0, R5f.xy).xw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = -(R0f.w) + R1f.w;
|
||||||
|
R127f.y = (R4f.x * 2.0 + -(1.0));
|
||||||
|
R125f.z = (R4f.w * 2.0 + -(1.0));
|
||||||
|
PV0f.w = 1.0;
|
||||||
|
R126f.z = R3f.y;
|
||||||
|
R126f.z /= 2.0;
|
||||||
|
PS0f = R126f.z;
|
||||||
|
// 1
|
||||||
|
tempf.x = dot(vec4(R6f.x,R6f.y,R6f.z,PV0f.w),vec4(intBitsToFloat(uf_remappedPS[0].x),intBitsToFloat(uf_remappedPS[0].y),intBitsToFloat(uf_remappedPS[0].z),intBitsToFloat(uf_remappedPS[0].w)));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
R127f.w = tempf.x;
|
||||||
|
R127f.z = 1.0 / PV0f.x;
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 2
|
||||||
|
R5f.x = (mul_nonIEEE(R3f.y,R127f.y) + R5f.z);
|
||||||
|
PV0f.y = -(R0f.w) + -(PV1f.x);
|
||||||
|
R5f.z = (mul_nonIEEE(R3f.y,R125f.z) + R5f.w);
|
||||||
|
R126f.w = -(R4f.y) + R4f.z;
|
||||||
|
R5f.y = R0f.x + -(R1f.x);
|
||||||
|
PS0f = R5f.y;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R127f.z;
|
||||||
|
R0f.x = R0f.y + -(R1f.y);
|
||||||
|
R0f.y = R0f.z + -(R1f.z);
|
||||||
|
R127f.z = -(R4f.y) + -(R127f.w);
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.y, backupReg0f);
|
||||||
|
PV1f.w = clamp(PV1f.w, 0.0, 1.0);
|
||||||
|
R127f.w = 1.0 / R2f.w;
|
||||||
|
PS1f = R127f.w;
|
||||||
|
// 4
|
||||||
|
PV0f.y = mul_nonIEEE(R126f.z, PV1f.w);
|
||||||
|
PS0f = 1.0 / R126f.w;
|
||||||
|
// 5
|
||||||
|
R123f.x = (mul_nonIEEE(R127f.y,PV0f.y) + R2f.x);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
PV1f.y = mul_nonIEEE(R127f.z, PS0f);
|
||||||
|
PV1f.y = clamp(PV1f.y, 0.0, 1.0);
|
||||||
|
R123f.z = (mul_nonIEEE(R125f.z,PV0f.y) + R2f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
// 6
|
||||||
|
backupReg0f = R3f.x;
|
||||||
|
R3f.x = mul_nonIEEE(PV1f.x, R127f.w);
|
||||||
|
R3f.y = mul_nonIEEE(PV1f.z, R127f.w);
|
||||||
|
R2f.w = mul_nonIEEE(backupReg0f, PV1f.y);
|
||||||
|
R5f.x = (texture(textureUnitPS1, R5f.xz).w);
|
||||||
|
R3f.xyz = (texture(textureUnitPS3, R3f.xy).xyz);
|
||||||
|
vec3 colhsv = rgb2hsv(R3f.rgb); // inverse hue rotation
|
||||||
|
R3f.rgb = hsv2rgb(vec3(mod(colhsv.x - hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
R3f.a *= ALPHA_FACTOR;
|
||||||
|
// 0
|
||||||
|
PV0f.z = mul_nonIEEE(R5f.x, R5f.x);
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(R0f.y,PV0f.z) + R1f.z);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(R0f.x,PV0f.z) + R1f.y);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
R123f.z = (mul_nonIEEE(R5f.y,PV0f.z) + R1f.x);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
// 2
|
||||||
|
R2f.x = (mul_nonIEEE(R5f.x,PV1f.z) + R3f.x);
|
||||||
|
R2f.y = (mul_nonIEEE(R5f.x,PV1f.y) + R3f.y);
|
||||||
|
R2f.z = (mul_nonIEEE(R5f.x,PV1f.x) + R3f.z);
|
||||||
|
// export
|
||||||
|
if (((vec4(R2f.x, R2f.y, R2f.z, R2f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
|
||||||
|
colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,157 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 8798144a6f066e7c
|
||||||
|
// Shrine - ending field 3
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[1];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21282000 res 128x128x1 dim 1 tm: 4 format 0433 compSel: 0 1 2 3 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fc9000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem2;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem7;
|
||||||
|
layout(location = 5) in vec4 passParameterSem8;
|
||||||
|
layout(location = 6) in vec4 passParameterSem11;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec4 R0f = vec4(0.0);
|
||||||
|
vec4 R1f = vec4(0.0);
|
||||||
|
vec4 R2f = vec4(0.0);
|
||||||
|
vec4 R3f = vec4(0.0);
|
||||||
|
vec4 R4f = vec4(0.0);
|
||||||
|
vec4 R5f = vec4(0.0);
|
||||||
|
vec4 R6f = vec4(0.0);
|
||||||
|
vec4 R7f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem2;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem7;
|
||||||
|
R5f = passParameterSem8;
|
||||||
|
R6f = passParameterSem11;
|
||||||
|
R7f.xyzw = (texture(textureUnitPS0, R5f.xy).xyzw);
|
||||||
|
R5f.xyz = (texture(textureUnitPS1, R5f.zw).xyz);
|
||||||
|
// 0
|
||||||
|
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,-0.0),vec4(R2f.x,R2f.y,R2f.z,0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
R127f.z = -(intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[0].w);
|
||||||
|
PS0f = R127f.z;
|
||||||
|
// 1
|
||||||
|
R127f.x = mul_nonIEEE(R5f.y, R5f.y);
|
||||||
|
R127f.y = mul_nonIEEE(R5f.x, R5f.x);
|
||||||
|
R126f.z = mul_nonIEEE(R5f.z, R5f.z);
|
||||||
|
PV1f.w = R7f.w * 1.0;
|
||||||
|
tempResultf = 1.0 / sqrt(PV0f.x);
|
||||||
|
PS1f = tempResultf;
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(R2f.x, PS1f);
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, PS1f);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, PS1f);
|
||||||
|
R127f.w = mul_nonIEEE(R4f.w, PV1f.w);
|
||||||
|
R126f.y = 1.0 / R127f.z;
|
||||||
|
PS0f = R126f.y;
|
||||||
|
// 3
|
||||||
|
tempf.x = dot(vec4(R6f.x,R6f.y,R6f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
R127f.z = mul_nonIEEE(R7f.x, R127f.y);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R126f.z;
|
||||||
|
backupReg1f = R127f.w;
|
||||||
|
backupReg2f = R0f.x;
|
||||||
|
PV0f.x = max(PV1f.x, -(PV1f.x));
|
||||||
|
R127f.y = mul_nonIEEE(R7f.y, R127f.x);
|
||||||
|
R126f.z = mul_nonIEEE(R7f.z, backupReg0f);
|
||||||
|
R127f.w = mul_nonIEEE(R0f.w, backupReg1f);
|
||||||
|
R127f.w = clamp(R127f.w, 0.0, 1.0);
|
||||||
|
PS0f = backupReg2f + -(R1f.x);
|
||||||
|
// 5
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
PV1f.x = R0f.z + -(R1f.z);
|
||||||
|
PV1f.y = backupReg0f + -(R1f.y);
|
||||||
|
R123f.z = (mul_nonIEEE(PS0f,R127f.z) + R1f.x);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = PV0f.x + -(intBitsToFloat(uf_remappedPS[0].z));
|
||||||
|
// 6
|
||||||
|
PV0f.x = PV1f.w * R126f.y;
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
R123f.z = (mul_nonIEEE(PV1f.y,R127f.y) + R1f.y);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(PV1f.x,R126f.z) + R1f.z);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
R1f.x = mul_nonIEEE(R4f.x, PV1f.z);
|
||||||
|
PS0f = R1f.x;
|
||||||
|
// 7
|
||||||
|
R1f.y = mul_nonIEEE(R4f.y, PV0f.z);
|
||||||
|
R123f.z = (intBitsToFloat(0xc0000000) * PV0f.x + intBitsToFloat(0x40400000));
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R1f.z = mul_nonIEEE(R4f.z, PV0f.w);
|
||||||
|
PS1f = R1f.z;
|
||||||
|
// 8
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.w, PV1f.z);
|
||||||
|
// 9
|
||||||
|
PV1f.x = mul_nonIEEE(R127f.w, PV0f.y);
|
||||||
|
// 10
|
||||||
|
R1f.w = mul_nonIEEE(R3f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R1f.x, R1f.y, R1f.z, R1f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,149 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 87babe7569572ff5
|
||||||
|
// Bomb - trails 1
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x2118e000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x213a7000 res 256x256x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x21636000 res 64x64x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem5;
|
||||||
|
layout(location = 5) in vec4 passParameterSem7;
|
||||||
|
layout(location = 6) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec4 R0f = vec4(0.0);
|
||||||
|
vec4 R1f = vec4(0.0);
|
||||||
|
vec4 R2f = vec4(0.0);
|
||||||
|
vec4 R3f = vec4(0.0);
|
||||||
|
vec4 R4f = vec4(0.0);
|
||||||
|
vec4 R5f = vec4(0.0);
|
||||||
|
vec4 R6f = vec4(0.0);
|
||||||
|
vec4 R7f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem5;
|
||||||
|
R5f = passParameterSem7;
|
||||||
|
R6f = passParameterSem8;
|
||||||
|
R4f.xw = (texture(textureUnitPS0, R5f.xy).xw);
|
||||||
|
R7f.y = (texture(textureUnitPS2, R6f.xy).w);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R7f.y;
|
||||||
|
backupReg1f = R0f.x;
|
||||||
|
PV0f.x = mul_nonIEEE(R1f.w, R7f.y);
|
||||||
|
R7f.y = mul_nonIEEE(R0f.w, backupReg0f);
|
||||||
|
R6f.z = backupReg1f + -(R1f.x);
|
||||||
|
R123f.w = (R4f.x * 2.0 + -(1.0));
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
R5f.x = (mul_nonIEEE(PV0f.w,PV0f.x) + R5f.z);
|
||||||
|
R5f.y = (mul_nonIEEE(PV0f.w,PV0f.x) + R5f.w);
|
||||||
|
R5f.z = mul_nonIEEE(R2f.x, PS0f);
|
||||||
|
R5f.w = mul_nonIEEE(R2f.y, PS0f);
|
||||||
|
R3f.w = 1.0 / R2f.w;
|
||||||
|
PS1f = R3f.w;
|
||||||
|
R3f.z = (texture(textureUnitPS1, R5f.xy).x);
|
||||||
|
R5f.x = (texture(textureUnitPS4, R5f.zw).x);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
R2f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R5f.x) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
PV0f.y = R2f.z * R3f.w;
|
||||||
|
R123f.z = (R3f.z * 2.0 + -(1.0));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R2f.w = backupReg0f + -(R1f.y);
|
||||||
|
// 1
|
||||||
|
backupReg0f = R6f.y;
|
||||||
|
backupReg1f = R0f.z;
|
||||||
|
R6f.y = (mul_nonIEEE(PV0f.z,R7f.y) + backupReg0f);
|
||||||
|
R0f.z = (mul_nonIEEE(PV0f.y,intBitsToFloat(uf_remappedPS[0].w)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R0f.w = backupReg1f + -(R1f.z);
|
||||||
|
R6f.y = (texture(textureUnitPS2, R6f.xy).x);
|
||||||
|
// 0
|
||||||
|
R123f.x = (mul_nonIEEE(R4f.w,R6f.y) + -(R3f.y));
|
||||||
|
PV0f.x = R123f.x;
|
||||||
|
PV0f.y = -(R3f.y) + R6f.y;
|
||||||
|
PS0f = 1.0 / R0f.z;
|
||||||
|
// 1
|
||||||
|
PV1f.y = -(intBitsToFloat(uf_remappedPS[0].z)) * PS0f;
|
||||||
|
PV1f.z = mul_nonIEEE(R4f.y, PV0f.y);
|
||||||
|
PV1f.z = clamp(PV1f.z, 0.0, 1.0);
|
||||||
|
PV1f.w = mul_nonIEEE(R4f.y, PV0f.x);
|
||||||
|
PV1f.w = clamp(PV1f.w, 0.0, 1.0);
|
||||||
|
R127f.z = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 2
|
||||||
|
R127f.x = mul_nonIEEE(R4f.z, PV1f.z);
|
||||||
|
R127f.x = clamp(R127f.x, 0.0, 1.0);
|
||||||
|
R0f.y = (mul_nonIEEE(R2f.w,PV1f.w) + R1f.y);
|
||||||
|
R0f.z = (mul_nonIEEE(R0f.w,PV1f.w) + R1f.z);
|
||||||
|
PV0f.w = -(PV1f.y) + R2f.x;
|
||||||
|
R0f.x = (mul_nonIEEE(R6f.z,PV1f.w) + R1f.x);
|
||||||
|
PS0f = R0f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.y = PV0f.w * R127f.z;
|
||||||
|
PV1f.y = clamp(PV1f.y, 0.0, 1.0);
|
||||||
|
// 4
|
||||||
|
PV0f.x = mul_nonIEEE(R127f.x, PV1f.y);
|
||||||
|
// 5
|
||||||
|
R0f.w = mul_nonIEEE(R3f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,142 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 8836c3a20b053cf0
|
||||||
|
// Shrine - vertical lines field
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[1];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21103000 res 4x64x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 1 1 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem2;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem7;
|
||||||
|
layout(location = 5) in vec4 passParameterSem8;
|
||||||
|
layout(location = 6) in vec4 passParameterSem11;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R122f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem2;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem7;
|
||||||
|
R5f = passParameterSem8;
|
||||||
|
R6f = passParameterSem11;
|
||||||
|
R5f.xyzw = (texture(textureUnitPS0, R5f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,-0.0),vec4(R2f.x,R2f.y,R2f.z,0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
R127f.z = -(intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[0].w);
|
||||||
|
PS0f = R127f.z;
|
||||||
|
// 1
|
||||||
|
R127f.x = R0f.y + -(R1f.y);
|
||||||
|
PV1f.y = mul_nonIEEE(R4f.w, R5f.w);
|
||||||
|
R126f.z = R0f.x + -(R1f.x);
|
||||||
|
R127f.w = R0f.z + -(R1f.z);
|
||||||
|
tempResultf = 1.0 / sqrt(PV0f.x);
|
||||||
|
PS1f = tempResultf;
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(R2f.x, PS1f);
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, PS1f);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, PS1f);
|
||||||
|
R126f.w = mul_nonIEEE(R0f.w, PV1f.y);
|
||||||
|
R126f.w = clamp(R126f.w, 0.0, 1.0);
|
||||||
|
R127f.y = 1.0 / R127f.z;
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 3
|
||||||
|
tempf.x = dot(vec4(R6f.x,R6f.y,R6f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
R122f.x = (mul_nonIEEE(R126f.z,R5f.x) + R1f.x);
|
||||||
|
PS1f = R122f.x;
|
||||||
|
// 4
|
||||||
|
PV0f.x = max(PV1f.x, -(PV1f.x));
|
||||||
|
R123f.z = (mul_nonIEEE(R127f.x,R5f.y) + R1f.y);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R127f.w,R5f.z) + R1f.z);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
R1f.x = mul_nonIEEE(R4f.x, PS1f);
|
||||||
|
PS0f = R1f.x;
|
||||||
|
// 5
|
||||||
|
R1f.y = mul_nonIEEE(R4f.y, PV0f.z);
|
||||||
|
R1f.z = mul_nonIEEE(R4f.z, PV0f.w);
|
||||||
|
PV1f.w = PV0f.x + -(intBitsToFloat(uf_remappedPS[0].z));
|
||||||
|
// 6
|
||||||
|
PV0f.x = PV1f.w * R127f.y;
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
// 7
|
||||||
|
R123f.z = (intBitsToFloat(0xc0000000) * PV0f.x + intBitsToFloat(0x40400000));
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
// 8
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.w, PV1f.z);
|
||||||
|
// 9
|
||||||
|
PV1f.x = mul_nonIEEE(R126f.w, PV0f.y);
|
||||||
|
// 10
|
||||||
|
R1f.w = mul_nonIEEE(R3f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R1f.x, R1f.y, R1f.z, R1f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,173 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 8d0a18894dd0c9cb
|
||||||
|
// Shrine - ending field 1
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[1];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21106000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fc9000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x21412000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem2;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 5) in vec4 passParameterSem9;
|
||||||
|
layout(location = 6) in vec4 passParameterSem11;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R122f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem2;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R5f = passParameterSem9;
|
||||||
|
R6f = passParameterSem11;
|
||||||
|
R7f.xy = (texture(textureUnitPS0, R4f.xy).xy);
|
||||||
|
R4f.xy = (texture(textureUnitPS0, R4f.zw).xy);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
R127f.x = -(intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[0].w);
|
||||||
|
PV0f.y = R7f.y + R4f.y;
|
||||||
|
PV0f.z = R7f.x + R4f.x;
|
||||||
|
R4f.w = backupReg0f + -(R1f.z);
|
||||||
|
PS0f = R2f.z * R2f.z;
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV1f.x = PV0f.z + -(1.0);
|
||||||
|
R4f.y = backupReg0f + -(R1f.x);
|
||||||
|
R5f.z = R0f.y + -(R1f.y);
|
||||||
|
PV1f.w = PV0f.y + -(1.0);
|
||||||
|
R122f.x = (R2f.y * R2f.y + PS0f);
|
||||||
|
PS1f = R122f.x;
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(R3f.y, PV1f.x);
|
||||||
|
R123f.y = (R2f.x * R2f.x + PS1f);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
R0f.z = R0f.w + PV1f.x;
|
||||||
|
PV0f.w = mul_nonIEEE(R3f.y, PV1f.w);
|
||||||
|
R0f.y = 1.0 / R127f.x;
|
||||||
|
PS0f = R0f.y;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R5f.x;
|
||||||
|
backupReg1f = R5f.y;
|
||||||
|
R5f.x = backupReg0f + PV0f.x;
|
||||||
|
R5f.y = backupReg1f + PV0f.w;
|
||||||
|
tempResultf = 1.0 / sqrt(PV0f.y);
|
||||||
|
R4f.z = tempResultf;
|
||||||
|
PS1f = R4f.z;
|
||||||
|
R3f.z = (texture(textureUnitPS2, R5f.xy).w);
|
||||||
|
R0f.w = (texture(textureUnitPS1, R0f.zz).x);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R2f.x, R4f.z);
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, R4f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, R4f.z);
|
||||||
|
R127f.w = R0f.w + R3f.z;
|
||||||
|
R127f.w /= 2.0;
|
||||||
|
PV0f.w = R127f.w;
|
||||||
|
R127f.z = (mul_nonIEEE(R4f.y,R0f.w) + R1f.x);
|
||||||
|
PS0f = R127f.z;
|
||||||
|
// 1
|
||||||
|
tempf.x = dot(vec4(R6f.x,R6f.y,R6f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
R126f.w = PV0f.w + intBitsToFloat(0xbf333333);
|
||||||
|
R126f.w = clamp(R126f.w, 0.0, 1.0);
|
||||||
|
PS1f = R126f.w;
|
||||||
|
// 2
|
||||||
|
PV0f.x = max(PV1f.x, -(PV1f.x));
|
||||||
|
R123f.y = (mul_nonIEEE(R3f.z,R127f.w) + PS1f);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
R126f.z = (mul_nonIEEE(R5f.z,R0f.w) + R1f.y);
|
||||||
|
PV0f.z = R126f.z;
|
||||||
|
R127f.w = (mul_nonIEEE(R4f.w,R0f.w) + R1f.z);
|
||||||
|
PV0f.w = R127f.w;
|
||||||
|
// 3
|
||||||
|
R127f.x = mul_nonIEEE(R1f.w, PV0f.y);
|
||||||
|
R127f.x = clamp(R127f.x, 0.0, 1.0);
|
||||||
|
PV1f.y = R127f.z * intBitsToFloat(0x41200000);
|
||||||
|
PV1f.z = PV0f.z * intBitsToFloat(0x41200000);
|
||||||
|
PV1f.w = PV0f.x + -(intBitsToFloat(uf_remappedPS[0].z));
|
||||||
|
PS1f = PV0f.w * intBitsToFloat(0x41200000);
|
||||||
|
// 4
|
||||||
|
PV0f.x = PV1f.w * R0f.y;
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
R0f.y = (mul_nonIEEE(PV1f.z,R126f.w) + R126f.z);
|
||||||
|
R0f.z = (mul_nonIEEE(PS1f,R126f.w) + R127f.w);
|
||||||
|
R0f.x = (mul_nonIEEE(PV1f.y,R126f.w) + R127f.z);
|
||||||
|
PS0f = R0f.x;
|
||||||
|
// 5
|
||||||
|
R123f.z = (intBitsToFloat(0xc0000000) * PV0f.x + intBitsToFloat(0x40400000));
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
// 6
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.w, PV1f.z);
|
||||||
|
// 7
|
||||||
|
PV1f.x = mul_nonIEEE(R127f.x, PV0f.y);
|
||||||
|
// 8
|
||||||
|
R0f.w = mul_nonIEEE(R3f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,631 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 8e9e804a3cd384c3
|
||||||
|
// Shrine lights, volcano path lights, generic lights, electric balls - reflection pass
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[13];
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf494a800 res 1280x720x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(binding = 2) uniform samplerCubeArray textureUnitPS2;// Tex2 addr 0x3df6e800 res 3x3x1 dim 3 tm: 2 format 0001 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x6) Sampler2 ClampX/Y/Z: 6 6 6 border: 1
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0x3df6f800 res 64x64x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(location = 1) noperspective in vec4 passParameterSem0;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
void redcCUBE(vec4 src0, vec4 src1, out vec3 stm, out int faceId)
|
||||||
|
{
|
||||||
|
// stm -> x .. s, y .. t, z .. MajorAxis*2.0
|
||||||
|
vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x));
|
||||||
|
float rx = inputCoord.x;
|
||||||
|
float ry = inputCoord.y;
|
||||||
|
float rz = inputCoord.z;
|
||||||
|
if( abs(rx) > abs(ry) && abs(rx) > abs(rz) )
|
||||||
|
{
|
||||||
|
stm.z = rx*2.0;
|
||||||
|
stm.xy = vec2(ry,rz);
|
||||||
|
if( rx >= 0.0 )
|
||||||
|
{
|
||||||
|
faceId = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
faceId = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) )
|
||||||
|
{
|
||||||
|
stm.z = ry*2.0;
|
||||||
|
stm.xy = vec2(rx,rz);
|
||||||
|
if( ry >= 0.0 )
|
||||||
|
{
|
||||||
|
faceId = 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
faceId = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) )
|
||||||
|
{
|
||||||
|
stm.z = rz*2.0;
|
||||||
|
stm.xy = vec2(rx,ry);
|
||||||
|
if( rz >= 0.0 )
|
||||||
|
{
|
||||||
|
faceId = 4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
faceId = 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
vec3 redcCUBEReverse(vec2 st, int faceId)
|
||||||
|
{
|
||||||
|
st.yx = st.xy;
|
||||||
|
vec3 v;
|
||||||
|
float majorAxis = 1.0;
|
||||||
|
if( faceId == 0 )
|
||||||
|
{
|
||||||
|
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
|
||||||
|
v.x = 1.0;
|
||||||
|
}
|
||||||
|
else if( faceId == 1 )
|
||||||
|
{
|
||||||
|
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
|
||||||
|
v.x = -1.0;
|
||||||
|
}
|
||||||
|
else if( faceId == 2 )
|
||||||
|
{
|
||||||
|
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
|
||||||
|
v.y = 1.0;
|
||||||
|
}
|
||||||
|
else if( faceId == 3 )
|
||||||
|
{
|
||||||
|
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
|
||||||
|
v.y = -1.0;
|
||||||
|
}
|
||||||
|
else if( faceId == 4 )
|
||||||
|
{
|
||||||
|
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
|
||||||
|
v.z = 1.0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
|
||||||
|
v.z = -1.0;
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
ivec4 R0i = ivec4(0);
|
||||||
|
ivec4 R1i = ivec4(0);
|
||||||
|
ivec4 R2i = ivec4(0);
|
||||||
|
ivec4 R3i = ivec4(0);
|
||||||
|
ivec4 R4i = ivec4(0);
|
||||||
|
ivec4 R5i = ivec4(0);
|
||||||
|
ivec4 R6i = ivec4(0);
|
||||||
|
ivec4 R7i = ivec4(0);
|
||||||
|
ivec4 R8i = ivec4(0);
|
||||||
|
ivec4 R9i = ivec4(0);
|
||||||
|
ivec4 R10i = ivec4(0);
|
||||||
|
ivec4 R11i = ivec4(0);
|
||||||
|
ivec4 R123i = ivec4(0);
|
||||||
|
ivec4 R124i = ivec4(0);
|
||||||
|
ivec4 R125i = ivec4(0);
|
||||||
|
ivec4 R126i = ivec4(0);
|
||||||
|
ivec4 R127i = ivec4(0);
|
||||||
|
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
|
||||||
|
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
|
||||||
|
int PS0i = 0, PS1i = 0;
|
||||||
|
ivec4 tempi = ivec4(0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
float cubeMapArrayIndex2 = 0.0;
|
||||||
|
R0i = floatBitsToInt(vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw));
|
||||||
|
R1i = floatBitsToInt(passParameterSem0);
|
||||||
|
// 0
|
||||||
|
R6i.x = 0x3f800000;
|
||||||
|
PV0i.y = floatBitsToInt(intBitsToFloat(R1i.x) + -(intBitsToFloat(uf_remappedPS[0].x)));
|
||||||
|
R127i.z = floatBitsToInt(intBitsToFloat(R1i.y) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R1i.x)) + 1.0));
|
||||||
|
PV0i.w = R123i.w;
|
||||||
|
PS0i = floatBitsToInt(1.0 / intBitsToFloat(uf_remappedPS[1].x));
|
||||||
|
// 1
|
||||||
|
R2i.x = floatBitsToInt(intBitsToFloat(R0i.x) * intBitsToFloat(PS0i));
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(PV0i.y)));
|
||||||
|
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.w)));
|
||||||
|
PV1i.z = R123i.z;
|
||||||
|
R11i.w = 0;
|
||||||
|
PS1i = floatBitsToInt(1.0 / intBitsToFloat(uf_remappedPS[1].y));
|
||||||
|
// 2
|
||||||
|
R9i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R127i.z)) + intBitsToFloat(PV1i.y)));
|
||||||
|
R2i.y = floatBitsToInt(intBitsToFloat(R0i.y) * intBitsToFloat(PS1i));
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.z));
|
||||||
|
R0i.y = floatBitsToInt(tempResultf);
|
||||||
|
PS0i = R0i.y;
|
||||||
|
R3i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.xy)).xyzw);
|
||||||
|
R2i.x = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R2i.xy)).x);
|
||||||
|
// 0
|
||||||
|
R127i.x = floatBitsToInt((intBitsToFloat(R3i.x) * 2.0 + -(1.0)));
|
||||||
|
PV0i.x = R127i.x;
|
||||||
|
R127i.y = floatBitsToInt((intBitsToFloat(R3i.y) * 2.0 + -(1.0)));
|
||||||
|
PV0i.y = R127i.y;
|
||||||
|
R127i.z = floatBitsToInt((intBitsToFloat(R3i.z) * 2.0 + -(1.0)));
|
||||||
|
PV0i.z = R127i.z;
|
||||||
|
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),intBitsToFloat(R2i.x)) + intBitsToFloat(uf_remappedPS[2].x)));
|
||||||
|
PV0i.w = R126i.w;
|
||||||
|
R127i.w = floatBitsToInt(intBitsToFloat(R3i.w) * intBitsToFloat(0x437f0000));
|
||||||
|
PS0i = R127i.w;
|
||||||
|
// 1
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R5i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),-(intBitsToFloat(PV0i.w))) + -(intBitsToFloat(uf_remappedPS[3].x))));
|
||||||
|
PS1i = R5i.x;
|
||||||
|
// 2
|
||||||
|
R7i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R0i.y)));
|
||||||
|
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),-(intBitsToFloat(R126i.w))) + -(intBitsToFloat(uf_remappedPS[3].y))));
|
||||||
|
R0i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),-(intBitsToFloat(R126i.w))) + -(intBitsToFloat(uf_remappedPS[3].z))));
|
||||||
|
R4i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(R0i.y)));
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
|
||||||
|
PS0i = floatBitsToInt(tempResultf);
|
||||||
|
// 3
|
||||||
|
R8i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
|
||||||
|
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
|
||||||
|
R5i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
|
||||||
|
R5i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R0i.y)));
|
||||||
|
PS1i = int(intBitsToFloat(R127i.w));
|
||||||
|
// 4
|
||||||
|
backupReg0i = R0i.z;
|
||||||
|
backupReg0i = R0i.z;
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R5i.x)),-(intBitsToFloat(R2i.y)),-(intBitsToFloat(backupReg0i)),-0.0),vec4(-(intBitsToFloat(R5i.x)),-(intBitsToFloat(R2i.y)),-(intBitsToFloat(backupReg0i)),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R125i.x = PS1i & 0x00000002;
|
||||||
|
PS0i = R125i.x;
|
||||||
|
// 5
|
||||||
|
R126i.x = floatBitsToInt(max(intBitsToFloat(PV0i.x), intBitsToFloat(0x3a83126f)));
|
||||||
|
PV1i.x = R126i.x;
|
||||||
|
R0i.y = floatBitsToInt(-(intBitsToFloat(R3i.w)) + 1.0);
|
||||||
|
R2i.z = floatBitsToInt(-(intBitsToFloat(R126i.w)));
|
||||||
|
R0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), -(intBitsToFloat(R126i.w))));
|
||||||
|
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), -(intBitsToFloat(R126i.w))));
|
||||||
|
PS1i = R4i.y;
|
||||||
|
// 6
|
||||||
|
backupReg0i = R0i.z;
|
||||||
|
R127i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R2i.y),intBitsToFloat(backupReg0i),-0.0),vec4(intBitsToFloat(uf_remappedPS[4].x),intBitsToFloat(uf_remappedPS[4].y),intBitsToFloat(uf_remappedPS[4].z),0.0)));
|
||||||
|
PV0i.x = R127i.x;
|
||||||
|
PV0i.y = R127i.x;
|
||||||
|
PV0i.z = R127i.x;
|
||||||
|
PV0i.w = R127i.x;
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
|
||||||
|
R125i.w = floatBitsToInt(tempResultf);
|
||||||
|
PS0i = R125i.w;
|
||||||
|
// 7
|
||||||
|
backupReg0i = R0i.y;
|
||||||
|
backupReg0i = R0i.y;
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R5i.x)), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R2i.y)), intBitsToFloat(PS0i)));
|
||||||
|
R4i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R0i.z)), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.z = R4i.z;
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].w), intBitsToFloat(PS0i)));
|
||||||
|
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg0i)) + intBitsToFloat(0x3d4ccccd)));
|
||||||
|
R126i.z = clampFI32(R126i.z);
|
||||||
|
PS1i = R126i.z;
|
||||||
|
// 8
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R6i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R125i.z = floatBitsToInt(min(intBitsToFloat(PV1i.w), 1.0));
|
||||||
|
PS0i = R125i.z;
|
||||||
|
// 9
|
||||||
|
backupReg0i = R0i.z;
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R2i.y),intBitsToFloat(backupReg0i),-0.0),vec4(intBitsToFloat(uf_remappedPS[6].x),intBitsToFloat(uf_remappedPS[6].y),intBitsToFloat(uf_remappedPS[6].z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R127i.y = tempi.x;
|
||||||
|
PS1i = floatBitsToInt(max(intBitsToFloat(PV0i.x), -(1.0)));
|
||||||
|
// 10
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R2i.y),intBitsToFloat(R0i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[7].x),intBitsToFloat(uf_remappedPS[7].y),intBitsToFloat(uf_remappedPS[7].z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R127i.z = tempi.x;
|
||||||
|
R126i.w = floatBitsToInt(min(intBitsToFloat(PS1i), 1.0));
|
||||||
|
PS0i = R126i.w;
|
||||||
|
// 11
|
||||||
|
redcCUBE(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.x),intBitsToFloat(R127i.x),intBitsToFloat(R127i.y)),vec4(intBitsToFloat(R127i.y),intBitsToFloat(R127i.x),intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.x)),cubeMapSTM,cubeMapFaceId);
|
||||||
|
R1i.x = floatBitsToInt(cubeMapSTM.x);
|
||||||
|
R1i.y = floatBitsToInt(cubeMapSTM.y);
|
||||||
|
R1i.z = floatBitsToInt(cubeMapSTM.z);
|
||||||
|
R1i.w = cubeMapFaceId;
|
||||||
|
PV1i.x = R1i.x;
|
||||||
|
PV1i.y = R1i.y;
|
||||||
|
PV1i.z = R1i.z;
|
||||||
|
PV1i.w = R1i.w;
|
||||||
|
R127i.x = floatBitsToInt(1.0 / intBitsToFloat(R125i.z));
|
||||||
|
PS1i = R127i.x;
|
||||||
|
// 12
|
||||||
|
R3i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PS1i),intBitsToFloat(uf_remappedPS[8].x)) + intBitsToFloat(uf_remappedPS[8].y)));
|
||||||
|
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(R126i.z)));
|
||||||
|
PV0i.y = R127i.y;
|
||||||
|
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.w),intBitsToFloat(uf_remappedPS[8].z)) + intBitsToFloat(uf_remappedPS[8].w)));
|
||||||
|
PV0i.z = R126i.z;
|
||||||
|
R126i.w = floatBitsToInt((intBitsToFloat(R0i.y) * 0.5 + 0.5));
|
||||||
|
PS0i = floatBitsToInt(1.0 / abs(intBitsToFloat(PV1i.z)));
|
||||||
|
// 13
|
||||||
|
backupReg0i = R1i.x;
|
||||||
|
backupReg1i = R1i.y;
|
||||||
|
R1i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PS0i)) + 1.5));
|
||||||
|
R1i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(PS0i)) + 1.5));
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.z)));
|
||||||
|
R127i.w = ((intBitsToFloat(PV0i.z) > 0.0)?int(0xFFFFFFFF):int(0x0));
|
||||||
|
R10i.x = floatBitsToInt(intBitsToFloat(PV0i.y) + -(1.0));
|
||||||
|
PS1i = R10i.x;
|
||||||
|
// 14
|
||||||
|
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(PV1i.z)));
|
||||||
|
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(R126i.w)));
|
||||||
|
R5i.y = floatBitsToInt(intBitsToFloat(R5i.y) / 2.0);
|
||||||
|
PV0i.y = R5i.y;
|
||||||
|
R6i.z = floatBitsToInt(intBitsToFloat(R127i.y) * intBitsToFloat(0x3ea2f983));
|
||||||
|
PV0i.w = floatBitsToInt(intBitsToFloat(R127i.x) * intBitsToFloat(0x40400000));
|
||||||
|
R6i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(R125i.z)));
|
||||||
|
PS0i = R6i.w;
|
||||||
|
// 15
|
||||||
|
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(uf_remappedPS[9].y)));
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(uf_remappedPS[10].y)));
|
||||||
|
PV1i.y = clampFI32(PV1i.y);
|
||||||
|
R123i.z = ((R127i.w == 0)?(0):(PV0i.x));
|
||||||
|
PV1i.z = R123i.z;
|
||||||
|
R2i.w = floatBitsToInt(-(intBitsToFloat(PV0i.y)) + 1.0);
|
||||||
|
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
|
||||||
|
// 16
|
||||||
|
R4i.x = ((intBitsToFloat(R3i.x) > intBitsToFloat(uf_remappedPS[9].x))?int(0xFFFFFFFF):int(0x0));
|
||||||
|
R3i.y = ((R125i.x == 0)?(R126i.z):(PV1i.z));
|
||||||
|
R3i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.y)),intBitsToFloat(PV1i.y)) + 1.0));
|
||||||
|
R3i.w = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(PS1i));
|
||||||
|
R3i.w = clampFI32(R3i.w);
|
||||||
|
R0i.x = floatBitsToInt(1.0 / intBitsToFloat(R125i.w));
|
||||||
|
R0i.x = floatBitsToInt(intBitsToFloat(R0i.x) / 2.0);
|
||||||
|
PS0i = R0i.x;
|
||||||
|
R1i.w = floatBitsToInt(texture(textureUnitPS2, vec4(redcCUBEReverse(intBitsToFloat(R1i.yx),R1i.w),cubeMapArrayIndex2)).x);
|
||||||
|
R3i.y = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R3i.xy)).x);
|
||||||
|
// 0
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R6i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(R7i.x),intBitsToFloat(R4i.w),intBitsToFloat(R5i.w),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
PS0i = ((intBitsToFloat(R1i.w) > intBitsToFloat(0x3f7ae148))?int(0xFFFFFFFF):int(0x0));
|
||||||
|
// 1
|
||||||
|
R126i.x = ((PS0i == 0)?(R1i.w):(0x42c80000));
|
||||||
|
PV1i.y = PV0i.x;
|
||||||
|
PV1i.y = clampFI32(PV1i.y);
|
||||||
|
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.y), intBitsToFloat(R2i.x)));
|
||||||
|
PV1i.w = PV0i.x;
|
||||||
|
PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * 2.0);
|
||||||
|
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R3i.w));
|
||||||
|
// 2
|
||||||
|
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.x),intBitsToFloat(PV1i.w)) + -(intBitsToFloat(R7i.x))));
|
||||||
|
PV0i.x = R125i.x;
|
||||||
|
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(PV1i.w)) + -(intBitsToFloat(R4i.w))));
|
||||||
|
PV0i.y = R127i.y;
|
||||||
|
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.z),intBitsToFloat(PV1i.w)) + -(intBitsToFloat(R5i.w))));
|
||||||
|
PV0i.z = R126i.z;
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.y)));
|
||||||
|
PV0i.w = R123i.w;
|
||||||
|
R126i.y = floatBitsToInt(intBitsToFloat(R0i.y) * intBitsToFloat(PS1i));
|
||||||
|
PS0i = R126i.y;
|
||||||
|
// 3
|
||||||
|
backupReg0i = R0i.z;
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R5i.x)),-(intBitsToFloat(R2i.y)),-(intBitsToFloat(backupReg0i)),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R124i.y = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
|
||||||
|
PS1i = R124i.y;
|
||||||
|
// 4
|
||||||
|
backupReg0i = R127i.y;
|
||||||
|
backupReg1i = R126i.z;
|
||||||
|
backupReg2i = R126i.x;
|
||||||
|
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(R5i.x)));
|
||||||
|
PV0i.x = R126i.x;
|
||||||
|
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV1i.x)) + intBitsToFloat(R2i.y)));
|
||||||
|
PV0i.y = R127i.y;
|
||||||
|
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(PV1i.x)) + intBitsToFloat(R0i.z)));
|
||||||
|
PV0i.z = R126i.z;
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[10].z),intBitsToFloat(backupReg2i)) + 4.0)/2.0);
|
||||||
|
PV0i.w = R123i.w;
|
||||||
|
R3i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R126i.y)));
|
||||||
|
PS0i = R3i.w;
|
||||||
|
// 5
|
||||||
|
backupReg0i = R0i.x;
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.w) + -(intBitsToFloat(backupReg0i)));
|
||||||
|
R127i.z = clampFI32(R127i.z);
|
||||||
|
PS1i = R127i.z;
|
||||||
|
// 6
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R0i.w),intBitsToFloat(R4i.y),intBitsToFloat(R2i.z),intBitsToFloat(R6i.x)),vec4(intBitsToFloat(uf_remappedPS[4].x),intBitsToFloat(uf_remappedPS[4].y),intBitsToFloat(uf_remappedPS[4].z),intBitsToFloat(uf_remappedPS[4].w))));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R126i.y = tempi.x;
|
||||||
|
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
|
||||||
|
// 7
|
||||||
|
R125i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R0i.w),intBitsToFloat(R4i.y),intBitsToFloat(R2i.z),intBitsToFloat(R6i.x)),vec4(intBitsToFloat(uf_remappedPS[6].x),intBitsToFloat(uf_remappedPS[6].y),intBitsToFloat(uf_remappedPS[6].z),intBitsToFloat(uf_remappedPS[6].w))));
|
||||||
|
PV1i.x = R125i.x;
|
||||||
|
PV1i.y = R125i.x;
|
||||||
|
PV1i.z = R125i.x;
|
||||||
|
PV1i.w = R125i.x;
|
||||||
|
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
|
||||||
|
// 8
|
||||||
|
R124i.x = ((R4i.x == 0)?(R3i.y):(R125i.z));
|
||||||
|
R125i.y = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + intBitsToFloat(uf_remappedPS[11].y));
|
||||||
|
R125i.y = clampFI32(R125i.y);
|
||||||
|
R125i.z = floatBitsToInt(-(intBitsToFloat(R126i.y)) + intBitsToFloat(uf_remappedPS[11].x));
|
||||||
|
R125i.z = clampFI32(R125i.z);
|
||||||
|
PV0i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[5].w) * intBitsToFloat(PS1i));
|
||||||
|
PV0i.w = clampFI32(PV0i.w);
|
||||||
|
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(R3i.z)));
|
||||||
|
PS0i = R1i.w;
|
||||||
|
// 9
|
||||||
|
backupReg0i = R126i.x;
|
||||||
|
backupReg1i = R127i.y;
|
||||||
|
backupReg2i = R126i.z;
|
||||||
|
backupReg3i = R125i.x;
|
||||||
|
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV0i.w)) + -(intBitsToFloat(R5i.x))));
|
||||||
|
PV1i.x = R126i.x;
|
||||||
|
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(PV0i.w)) + -(intBitsToFloat(R2i.y))));
|
||||||
|
PV1i.y = R127i.y;
|
||||||
|
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg2i),intBitsToFloat(PV0i.w)) + -(intBitsToFloat(R0i.z))));
|
||||||
|
PV1i.z = R126i.z;
|
||||||
|
PV1i.w = floatBitsToInt(intBitsToFloat(R126i.y) + -(intBitsToFloat(uf_remappedPS[12].x)));
|
||||||
|
PV1i.w = clampFI32(PV1i.w);
|
||||||
|
R125i.x = floatBitsToInt(intBitsToFloat(backupReg3i) + -(intBitsToFloat(uf_remappedPS[12].y)));
|
||||||
|
R125i.x = clampFI32(R125i.x);
|
||||||
|
PS1i = R125i.x;
|
||||||
|
// 10
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R127i.x = floatBitsToInt(max(intBitsToFloat(R125i.z), intBitsToFloat(PV1i.w)));
|
||||||
|
PS0i = R127i.x;
|
||||||
|
// 11
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R0i.w),intBitsToFloat(R4i.y),intBitsToFloat(R2i.z),intBitsToFloat(R6i.x)),vec4(intBitsToFloat(uf_remappedPS[7].x),intBitsToFloat(uf_remappedPS[7].y),intBitsToFloat(uf_remappedPS[7].z),intBitsToFloat(uf_remappedPS[7].w))));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R125i.w = tempi.x;
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
|
||||||
|
PS1i = floatBitsToInt(tempResultf);
|
||||||
|
// 12
|
||||||
|
backupReg0i = R127i.y;
|
||||||
|
backupReg1i = R126i.z;
|
||||||
|
backupReg2i = R127i.x;
|
||||||
|
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.x = R127i.x;
|
||||||
|
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.y = R127i.y;
|
||||||
|
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.z = R126i.z;
|
||||||
|
R124i.w = floatBitsToInt(max(intBitsToFloat(R125i.y), intBitsToFloat(R125i.x)));
|
||||||
|
R127i.w = floatBitsToInt(-(intBitsToFloat(backupReg2i)) + 1.0);
|
||||||
|
PS0i = R127i.w;
|
||||||
|
// 13
|
||||||
|
backupReg0i = R125i.w;
|
||||||
|
backupReg0i = R125i.w;
|
||||||
|
R126i.x = floatBitsToInt(intBitsToFloat(R7i.x) + intBitsToFloat(PV0i.x));
|
||||||
|
PV1i.x = R126i.x;
|
||||||
|
R125i.y = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV0i.y));
|
||||||
|
PV1i.y = R125i.y;
|
||||||
|
R125i.z = floatBitsToInt(intBitsToFloat(R5i.w) + intBitsToFloat(PV0i.z));
|
||||||
|
PV1i.z = R125i.z;
|
||||||
|
R125i.w = floatBitsToInt(-(intBitsToFloat(backupReg0i)) + intBitsToFloat(uf_remappedPS[11].z));
|
||||||
|
R125i.w = clampFI32(R125i.w);
|
||||||
|
R126i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + -(intBitsToFloat(uf_remappedPS[12].z)));
|
||||||
|
R126i.w = clampFI32(R126i.w);
|
||||||
|
PS1i = R126i.w;
|
||||||
|
// 14
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R0i.w = floatBitsToInt(max(-(intBitsToFloat(R4i.z)), 0.0));
|
||||||
|
PS0i = R0i.w;
|
||||||
|
// 15
|
||||||
|
R6i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R6i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.y),intBitsToFloat(R126i.z),0.0)));
|
||||||
|
R6i.x = clampFI32(R6i.x);
|
||||||
|
PV1i.x = R6i.x;
|
||||||
|
PV1i.y = R6i.x;
|
||||||
|
PV1i.z = R6i.x;
|
||||||
|
PV1i.w = R6i.x;
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
|
||||||
|
PS1i = floatBitsToInt(tempResultf);
|
||||||
|
// 16
|
||||||
|
backupReg0i = R126i.x;
|
||||||
|
backupReg1i = R125i.y;
|
||||||
|
backupReg2i = R127i.z;
|
||||||
|
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.x = R126i.x;
|
||||||
|
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.y = R125i.y;
|
||||||
|
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.z = R127i.z;
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.y)));
|
||||||
|
PV0i.w = R123i.w;
|
||||||
|
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg2i), intBitsToFloat(R127i.w)));
|
||||||
|
PS0i = R125i.z;
|
||||||
|
// 17
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R4i.w),intBitsToFloat(R5i.w),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
tempi.x = clampFI32(tempi.x);
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R127i.w = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
|
||||||
|
PS1i = R127i.w;
|
||||||
|
// 18
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R6i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R125i.y),intBitsToFloat(R127i.z),0.0)));
|
||||||
|
tempi.x = clampFI32(tempi.x);
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R125i.y = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
|
||||||
|
PS0i = R125i.y;
|
||||||
|
// 19
|
||||||
|
backupReg0i = R124i.y;
|
||||||
|
backupReg1i = R9i.x;
|
||||||
|
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.x = R126i.x;
|
||||||
|
R124i.y = floatBitsToInt(max(intBitsToFloat(R125i.w), intBitsToFloat(R126i.w)));
|
||||||
|
R5i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R127i.w)));
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
|
||||||
|
R9i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[0].z)),intBitsToFloat(backupReg1i)) + 1.0));
|
||||||
|
R9i.x = clampFI32(R9i.x);
|
||||||
|
PS1i = R9i.x;
|
||||||
|
// 20
|
||||||
|
backupReg0i = R125i.y;
|
||||||
|
PV0i.x = floatBitsToInt(-(intBitsToFloat(R124i.w)) + 1.0);
|
||||||
|
R125i.y = floatBitsToInt(min(intBitsToFloat(R0i.w), 1.0));
|
||||||
|
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.x),intBitsToFloat(PV1i.w)) + 1.0));
|
||||||
|
PV0i.z = R123i.z;
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.x)));
|
||||||
|
R127i.y = floatBitsToInt(-(intBitsToFloat(R1i.w)) + 1.0);
|
||||||
|
PS0i = R127i.y;
|
||||||
|
// 21
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.z)));
|
||||||
|
R6i.y = floatBitsToInt(-(intBitsToFloat(R124i.y)) + 1.0);
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PV0i.w)));
|
||||||
|
R4i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PV0i.x)));
|
||||||
|
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].x), intBitsToFloat(R124i.x)));
|
||||||
|
PS1i = R5i.y;
|
||||||
|
// 22
|
||||||
|
R10i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].y), intBitsToFloat(R124i.x)));
|
||||||
|
R4i.y = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x3f75c28f) + intBitsToFloat(0x3d23d70a)));
|
||||||
|
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.y),intBitsToFloat(R127i.y)) + intBitsToFloat(R1i.w)));
|
||||||
|
R5i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].z), intBitsToFloat(R124i.x)));
|
||||||
|
R0i.w = floatBitsToInt(1.0 / intBitsToFloat(PV1i.x));
|
||||||
|
PS0i = R0i.w;
|
||||||
|
// 0
|
||||||
|
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.w),intBitsToFloat(R6i.y)) + -(1.0)));
|
||||||
|
PV0i.x = R123i.x;
|
||||||
|
PV0i.y = floatBitsToInt(intBitsToFloat(R5i.y) * intBitsToFloat(0x3ea2f983));
|
||||||
|
PV0i.z = floatBitsToInt(intBitsToFloat(R6i.z) * intBitsToFloat(R0i.w));
|
||||||
|
PV0i.w = floatBitsToInt(intBitsToFloat(R10i.x) * intBitsToFloat(0x3ea2f983));
|
||||||
|
PS0i = floatBitsToInt(intBitsToFloat(R5i.w) * intBitsToFloat(0x3ea2f983));
|
||||||
|
// 1
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R4i.y)));
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(PV0i.y)));
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(PV0i.w)));
|
||||||
|
R124i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(uf_remappedPS[10].w)) + 1.0));
|
||||||
|
PV1i.w = R124i.w;
|
||||||
|
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(PS0i)));
|
||||||
|
// 2
|
||||||
|
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.y)));
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.z)));
|
||||||
|
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(PV1i.x)));
|
||||||
|
// 3
|
||||||
|
R11i.x = floatBitsToInt(min(intBitsToFloat(PV0i.x), intBitsToFloat(0x42000000)));
|
||||||
|
R11i.y = floatBitsToInt(min(intBitsToFloat(PV0i.y), intBitsToFloat(0x42000000)));
|
||||||
|
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.w) * 0.25);
|
||||||
|
R11i.z = floatBitsToInt(min(intBitsToFloat(PV0i.z), intBitsToFloat(0x42000000)));
|
||||||
|
PS1i = R11i.z;
|
||||||
|
// 4
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(PV1i.z)));
|
||||||
|
// 5
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.w), intBitsToFloat(PV0i.y)));
|
||||||
|
// 6
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV1i.x)));
|
||||||
|
// 7
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].z), intBitsToFloat(PV0i.w)));
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].y), intBitsToFloat(PV0i.w)));
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].x), intBitsToFloat(PV0i.w)));
|
||||||
|
// 8
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.x), intBitsToFloat(PV1i.x)));
|
||||||
|
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.x), intBitsToFloat(PV1i.y)));
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.x), intBitsToFloat(PV1i.z)));
|
||||||
|
// 9
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(PV0i.w)));
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(PV0i.y)));
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(PV0i.z)));
|
||||||
|
// 10
|
||||||
|
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PV1i.w)));
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PV1i.x)));
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PV1i.z)));
|
||||||
|
// 11
|
||||||
|
R4i.x = floatBitsToInt(min(intBitsToFloat(PV0i.y), intBitsToFloat(0x42000000)));
|
||||||
|
R4i.y = floatBitsToInt(min(intBitsToFloat(PV0i.x), intBitsToFloat(0x42000000)));
|
||||||
|
R4i.z = floatBitsToInt(min(intBitsToFloat(PV0i.w), intBitsToFloat(0x42000000)));
|
||||||
|
// 12
|
||||||
|
R0i.xyz = ivec3(R11i.x,R11i.y,R11i.z);
|
||||||
|
R0i.w = R11i.w;
|
||||||
|
// 13
|
||||||
|
R1i.xyz = ivec3(R4i.x,R4i.y,R4i.z);
|
||||||
|
R1i.w = R4i.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
passPixelColor1 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
|
||||||
|
colhsv = rgb2hsv(passPixelColor1.rgb);
|
||||||
|
passPixelColor1.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor1.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,110 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 8fe014235f134ac1
|
||||||
|
// Shrine - generic particles
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fd4000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem3;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 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 = passParameterSem3;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem8;
|
||||||
|
R3f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
R4f.x = mul_nonIEEE(R0f.w, R3f.w);
|
||||||
|
R4f.x = clamp(R4f.x, 0.0, 1.0);
|
||||||
|
R5f.y = mul_nonIEEE(R0f.y, R3f.y);
|
||||||
|
R5f.z = mul_nonIEEE(R0f.z, R3f.z);
|
||||||
|
PS0f = 1.0 / R1f.w;
|
||||||
|
// 1
|
||||||
|
R5f.x = mul_nonIEEE(R0f.x, R3f.x);
|
||||||
|
PV1f.y = R1f.z * PS0f;
|
||||||
|
PS1f = 1.0 / R1f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R1f.x;
|
||||||
|
backupReg1f = R1f.y;
|
||||||
|
R1f.x = mul_nonIEEE(backupReg0f, PS1f);
|
||||||
|
R1f.y = mul_nonIEEE(backupReg1f, PS1f);
|
||||||
|
R1f.z = (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[0].w)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R1f.x = (texture(textureUnitPS4, R1f.xy).x);
|
||||||
|
// 0
|
||||||
|
R127f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.x) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
PS0f = 1.0 / R1f.z;
|
||||||
|
// 1
|
||||||
|
PV1f.y = -(intBitsToFloat(uf_remappedPS[0].z)) * PS0f;
|
||||||
|
R127f.z = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 2
|
||||||
|
PV0f.w = -(PV1f.y) + R127f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.y = PV0f.w * R127f.z;
|
||||||
|
PV1f.y = clamp(PV1f.y, 0.0, 1.0);
|
||||||
|
// 4
|
||||||
|
PV0f.x = mul_nonIEEE(R4f.x, PV1f.y);
|
||||||
|
// 5
|
||||||
|
R5f.w = mul_nonIEEE(R2f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R5f.x, R5f.y, R5f.z, R5f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,614 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 99122c964b6a1a19
|
||||||
|
// Shrine - elevator reflection pass
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[10];
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf494a800 res 1280x720x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x3df6f800 res 64x64x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(location = 1) noperspective in vec4 passParameterSem0;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
ivec4 R0i = ivec4(0);
|
||||||
|
ivec4 R1i = ivec4(0);
|
||||||
|
ivec4 R2i = ivec4(0);
|
||||||
|
ivec4 R3i = ivec4(0);
|
||||||
|
ivec4 R4i = ivec4(0);
|
||||||
|
ivec4 R5i = ivec4(0);
|
||||||
|
ivec4 R6i = ivec4(0);
|
||||||
|
ivec4 R7i = ivec4(0);
|
||||||
|
ivec4 R8i = ivec4(0);
|
||||||
|
ivec4 R122i = ivec4(0);
|
||||||
|
ivec4 R123i = ivec4(0);
|
||||||
|
ivec4 R124i = ivec4(0);
|
||||||
|
ivec4 R125i = ivec4(0);
|
||||||
|
ivec4 R126i = ivec4(0);
|
||||||
|
ivec4 R127i = ivec4(0);
|
||||||
|
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
|
||||||
|
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
|
||||||
|
int PS0i = 0, PS1i = 0;
|
||||||
|
ivec4 tempi = ivec4(0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
bool activeMaskStack[2];
|
||||||
|
bool activeMaskStackC[3];
|
||||||
|
activeMaskStack[0] = false;
|
||||||
|
activeMaskStackC[0] = false;
|
||||||
|
activeMaskStackC[1] = false;
|
||||||
|
activeMaskStack[0] = true;
|
||||||
|
activeMaskStackC[0] = true;
|
||||||
|
activeMaskStackC[1] = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0i = floatBitsToInt(vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw));
|
||||||
|
R1i = floatBitsToInt(passParameterSem0);
|
||||||
|
if( activeMaskStackC[1] == true ) {
|
||||||
|
// 0
|
||||||
|
PS0i = floatBitsToInt(1.0 / intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
// 1
|
||||||
|
R2i.x = floatBitsToInt(intBitsToFloat(R0i.x) * intBitsToFloat(PS0i));
|
||||||
|
PS1i = floatBitsToInt(1.0 / intBitsToFloat(uf_remappedPS[0].y));
|
||||||
|
// 2
|
||||||
|
R2i.y = floatBitsToInt(intBitsToFloat(R0i.y) * intBitsToFloat(PS1i));
|
||||||
|
R0i.y = floatBitsToInt(1.0 / intBitsToFloat(uf_remappedPS[1].w));
|
||||||
|
PS0i = R0i.y;
|
||||||
|
}
|
||||||
|
if( activeMaskStackC[1] == true ) {
|
||||||
|
R0i.x = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R2i.xy)).x);
|
||||||
|
R2i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.xy)).xyzw);
|
||||||
|
}
|
||||||
|
if( activeMaskStackC[1] == true ) {
|
||||||
|
activeMaskStack[1] = activeMaskStack[0];
|
||||||
|
activeMaskStackC[2] = activeMaskStackC[1];
|
||||||
|
// 0
|
||||||
|
R127i.x = floatBitsToInt((intBitsToFloat(R2i.x) * 2.0 + -(1.0)));
|
||||||
|
R127i.y = floatBitsToInt((intBitsToFloat(R2i.y) * 2.0 + -(1.0)));
|
||||||
|
R127i.z = floatBitsToInt((intBitsToFloat(R2i.z) * 2.0 + -(1.0)));
|
||||||
|
PV0i.z = R127i.z;
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),intBitsToFloat(R0i.x)) + intBitsToFloat(uf_remappedPS[2].x)));
|
||||||
|
PV0i.w = R123i.w;
|
||||||
|
// 1
|
||||||
|
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), -(intBitsToFloat(PV0i.w))));
|
||||||
|
PV1i.x = R125i.x;
|
||||||
|
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), -(intBitsToFloat(PV0i.w))));
|
||||||
|
PV1i.y = R126i.y;
|
||||||
|
R126i.z = floatBitsToInt(-(intBitsToFloat(PV0i.w)));
|
||||||
|
PV1i.z = R126i.z;
|
||||||
|
PS1i = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(PV0i.z));
|
||||||
|
// 2
|
||||||
|
R5i.x = floatBitsToInt(-(intBitsToFloat(PV1i.y)) + intBitsToFloat(uf_remappedPS[3].x));
|
||||||
|
PV0i.x = R5i.x;
|
||||||
|
R7i.y = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + intBitsToFloat(uf_remappedPS[3].y));
|
||||||
|
PV0i.y = R7i.y;
|
||||||
|
R7i.z = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + intBitsToFloat(uf_remappedPS[3].z));
|
||||||
|
PV0i.z = R7i.z;
|
||||||
|
R122i.x = floatBitsToInt((intBitsToFloat(R127i.y) * intBitsToFloat(R127i.y) + intBitsToFloat(PS1i)));
|
||||||
|
PS0i = R122i.x;
|
||||||
|
// 3
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(PV0i.x)),-(intBitsToFloat(PV0i.y)),-(intBitsToFloat(PV0i.z)),-0.0),vec4(intBitsToFloat(uf_remappedPS[1].x),intBitsToFloat(uf_remappedPS[1].y),intBitsToFloat(uf_remappedPS[1].z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R122i.x = floatBitsToInt((intBitsToFloat(R127i.x) * intBitsToFloat(R127i.x) + intBitsToFloat(PS0i)));
|
||||||
|
PS1i = R122i.x;
|
||||||
|
// 4
|
||||||
|
R126i.x = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(R0i.y));
|
||||||
|
R126i.x = clampFI32(R126i.x);
|
||||||
|
PV0i.x = R126i.x;
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PS1i));
|
||||||
|
PS0i = floatBitsToInt(tempResultf);
|
||||||
|
// 5
|
||||||
|
R7i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
|
||||||
|
R8i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
|
||||||
|
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),intBitsToFloat(PV0i.x)) + intBitsToFloat(uf_remappedPS[3].y)));
|
||||||
|
PV1i.z = R123i.z;
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),intBitsToFloat(PV0i.x)) + intBitsToFloat(uf_remappedPS[3].x)));
|
||||||
|
PV1i.w = R123i.w;
|
||||||
|
R8i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
|
||||||
|
PS1i = R8i.z;
|
||||||
|
// 6
|
||||||
|
backupReg0i = R126i.x;
|
||||||
|
R126i.x = floatBitsToInt(intBitsToFloat(R126i.y) + -(intBitsToFloat(PV1i.w)));
|
||||||
|
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),intBitsToFloat(backupReg0i)) + intBitsToFloat(uf_remappedPS[3].z)));
|
||||||
|
PV0i.y = R123i.y;
|
||||||
|
R127i.z = floatBitsToInt(intBitsToFloat(R125i.x) + -(intBitsToFloat(PV1i.z)));
|
||||||
|
// 7
|
||||||
|
backupReg0i = R126i.z;
|
||||||
|
R126i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + -(intBitsToFloat(PV0i.y)));
|
||||||
|
PV1i.z = R126i.z;
|
||||||
|
// 8
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R126i.x)),-(intBitsToFloat(R127i.z)),-(intBitsToFloat(PV1i.z)),-0.0),vec4(-(intBitsToFloat(R126i.x)),-(intBitsToFloat(R127i.z)),-(intBitsToFloat(PV1i.z)),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R6i.w = tempi.x;
|
||||||
|
// 9
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
|
||||||
|
PS1i = floatBitsToInt(tempResultf);
|
||||||
|
// 10
|
||||||
|
R6i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R126i.x)), intBitsToFloat(PS1i)));
|
||||||
|
R6i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R127i.z)), intBitsToFloat(PS1i)));
|
||||||
|
R6i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R126i.z)), intBitsToFloat(PS1i)));
|
||||||
|
R0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(uf_remappedPS[4].w)));
|
||||||
|
PV0i.w = R0i.w;
|
||||||
|
// 11
|
||||||
|
R5i.w = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
|
||||||
|
PS1i = R5i.w;
|
||||||
|
// 12
|
||||||
|
predResult = (intBitsToFloat(R0i.w) > 1.0);
|
||||||
|
activeMaskStack[1] = predResult;
|
||||||
|
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
activeMaskStack[1] = false;
|
||||||
|
activeMaskStackC[2] = false;
|
||||||
|
}
|
||||||
|
if( activeMaskStackC[2] == true ) {
|
||||||
|
// 0
|
||||||
|
PV0i.x = floatBitsToInt(intBitsToFloat(uf_remappedPS[1].z) + intBitsToFloat(R6i.z));
|
||||||
|
PV0i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[1].y) + intBitsToFloat(R6i.y));
|
||||||
|
PV0i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[1].x) + intBitsToFloat(R6i.x));
|
||||||
|
R1i.w = 0x3f800000;
|
||||||
|
PS0i = R1i.w;
|
||||||
|
// 1
|
||||||
|
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(R5i.w)) + -(intBitsToFloat(uf_remappedPS[1].x))));
|
||||||
|
PV1i.x = R127i.x;
|
||||||
|
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R5i.w)) + -(intBitsToFloat(uf_remappedPS[1].y))));
|
||||||
|
PV1i.y = R127i.y;
|
||||||
|
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R5i.w)) + -(intBitsToFloat(uf_remappedPS[1].z))));
|
||||||
|
PV1i.z = R127i.z;
|
||||||
|
// 2
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
// 3
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
|
||||||
|
PS1i = floatBitsToInt(tempResultf);
|
||||||
|
// 4
|
||||||
|
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS1i)));
|
||||||
|
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS1i)));
|
||||||
|
R6i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS1i)));
|
||||||
|
// 5
|
||||||
|
R0i.w = R1i.w;
|
||||||
|
}
|
||||||
|
activeMaskStack[1] = activeMaskStack[1] == false;
|
||||||
|
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
|
||||||
|
if( activeMaskStackC[2] == true ) {
|
||||||
|
// 0
|
||||||
|
R1i.w = R5i.w;
|
||||||
|
}
|
||||||
|
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
|
||||||
|
if( activeMaskStackC[1] == true ) {
|
||||||
|
// 0
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R8i.y),intBitsToFloat(R8i.z),-0.0),vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R6i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R2i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.w),intBitsToFloat(uf_remappedPS[5].x)) + intBitsToFloat(uf_remappedPS[5].y)));
|
||||||
|
PS0i = R2i.x;
|
||||||
|
// 1
|
||||||
|
PV1i.x = floatBitsToInt(max(intBitsToFloat(PV0i.x), -(1.0)));
|
||||||
|
R3i.y = floatBitsToInt(-(intBitsToFloat(R2i.w)) + 1.0);
|
||||||
|
PV1i.y = R3i.y;
|
||||||
|
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R1i.x)) + 1.0));
|
||||||
|
PV1i.z = R123i.z;
|
||||||
|
R2i.w = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[6].x)) + intBitsToFloat(uf_remappedPS[7].x));
|
||||||
|
R4i.y = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[6].y)) + intBitsToFloat(uf_remappedPS[7].y));
|
||||||
|
PS1i = R4i.y;
|
||||||
|
// 2
|
||||||
|
R123i.x = floatBitsToInt((intBitsToFloat(PV1i.y) * 0.5 + 0.5));
|
||||||
|
PV0i.x = R123i.x;
|
||||||
|
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV1i.z)));
|
||||||
|
PV0i.y = R123i.y;
|
||||||
|
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.y)) + intBitsToFloat(0x3d4ccccd)));
|
||||||
|
R123i.z = clampFI32(R123i.z);
|
||||||
|
PV0i.z = R123i.z;
|
||||||
|
PV0i.w = floatBitsToInt(min(intBitsToFloat(PV1i.x), 1.0));
|
||||||
|
R2i.z = 0;
|
||||||
|
PS0i = R2i.z;
|
||||||
|
// 3
|
||||||
|
backupReg0i = R1i.w;
|
||||||
|
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.z)));
|
||||||
|
PV1i.x = R127i.x;
|
||||||
|
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(uf_remappedPS[5].z)) + intBitsToFloat(uf_remappedPS[5].w)));
|
||||||
|
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
|
||||||
|
R4i.z = floatBitsToInt(intBitsToFloat(R4i.z) / 2.0);
|
||||||
|
PV1i.z = R4i.z;
|
||||||
|
R1i.w = floatBitsToInt(intBitsToFloat(backupReg0i) * intBitsToFloat(0x40400000));
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.y));
|
||||||
|
PS1i = floatBitsToInt(tempResultf);
|
||||||
|
// 4
|
||||||
|
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.x = R4i.x;
|
||||||
|
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.y = R5i.y;
|
||||||
|
R5i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.z = R5i.z;
|
||||||
|
R4i.w = floatBitsToInt(intBitsToFloat(PV1i.x) + -(1.0));
|
||||||
|
R3i.w = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + 1.0);
|
||||||
|
PS0i = R3i.w;
|
||||||
|
// 5
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R8i.y),intBitsToFloat(R8i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R6i.y = floatBitsToInt(intBitsToFloat(R127i.x) * intBitsToFloat(0x3ea2f983));
|
||||||
|
PS1i = R6i.y;
|
||||||
|
// 6
|
||||||
|
R0i.x = floatBitsToInt(intBitsToFloat(R5i.w) + intBitsToFloat(0xbf666666));
|
||||||
|
R0i.y = PV1i.x;
|
||||||
|
R0i.y = clampFI32(R0i.y);
|
||||||
|
R0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(R0i.w)));
|
||||||
|
R0i.w = PV1i.x;
|
||||||
|
R0i.w = floatBitsToInt(intBitsToFloat(R0i.w) * 2.0);
|
||||||
|
R3i.x = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(uf_remappedPS[6].x));
|
||||||
|
PS0i = R3i.x;
|
||||||
|
}
|
||||||
|
if( activeMaskStackC[1] == true ) {
|
||||||
|
R3i.z = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.xy)).x);
|
||||||
|
}
|
||||||
|
if( activeMaskStackC[1] == true ) {
|
||||||
|
// 0
|
||||||
|
R124i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.x),intBitsToFloat(R0i.w)) + -(intBitsToFloat(R4i.x))));
|
||||||
|
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),intBitsToFloat(R0i.w)) + -(intBitsToFloat(R5i.y))));
|
||||||
|
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),intBitsToFloat(R0i.w)) + -(intBitsToFloat(R5i.z))));
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.y),intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.z)));
|
||||||
|
PV0i.w = R123i.w;
|
||||||
|
R126i.x = floatBitsToInt(intBitsToFloat(R0i.x) * intBitsToFloat(0x40a00000));
|
||||||
|
R126i.x = clampFI32(R126i.x);
|
||||||
|
PS0i = R126i.x;
|
||||||
|
// 1
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[1].x),intBitsToFloat(uf_remappedPS[1].y),intBitsToFloat(uf_remappedPS[1].z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R127i.y = tempi.x;
|
||||||
|
R0i.y = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
|
||||||
|
PS1i = R0i.y;
|
||||||
|
// 2
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[1].x),intBitsToFloat(uf_remappedPS[1].y),intBitsToFloat(uf_remappedPS[1].z),-0.0),vec4(intBitsToFloat(R124i.x),intBitsToFloat(R126i.y),intBitsToFloat(R126i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R127i.w = tempi.x;
|
||||||
|
R125i.x = floatBitsToInt(1.0 / intBitsToFloat(R1i.w));
|
||||||
|
PS0i = R125i.x;
|
||||||
|
// 3
|
||||||
|
R127i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),-0.0),vec4(intBitsToFloat(R124i.x),intBitsToFloat(R126i.y),intBitsToFloat(R126i.z),0.0)));
|
||||||
|
PV1i.x = R127i.x;
|
||||||
|
PV1i.y = R127i.x;
|
||||||
|
PV1i.z = R127i.x;
|
||||||
|
PV1i.w = R127i.x;
|
||||||
|
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PV0i.x)));
|
||||||
|
PS1i = R127i.z;
|
||||||
|
// 4
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),-0.0),vec4(intBitsToFloat(R5i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PV1i.x)));
|
||||||
|
// 5
|
||||||
|
backupReg0i = R127i.x;
|
||||||
|
backupReg1i = R127i.z;
|
||||||
|
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R127i.w)) + intBitsToFloat(PS0i)));
|
||||||
|
R125i.y = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(uf_remappedPS[6].y));
|
||||||
|
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(R126i.x)));
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[1].w)),intBitsToFloat(backupReg0i)) + intBitsToFloat(backupReg1i)));
|
||||||
|
PV1i.w = R123i.w;
|
||||||
|
R127i.w = floatBitsToInt(intBitsToFloat(R3i.y) + intBitsToFloat(R125i.x));
|
||||||
|
R127i.w = clampFI32(R127i.w);
|
||||||
|
PS1i = R127i.w;
|
||||||
|
// 6
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.w),intBitsToFloat(R4i.y),intBitsToFloat(R2i.z),-0.0),vec4(intBitsToFloat(R2i.w),intBitsToFloat(R4i.y),intBitsToFloat(R4i.y),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
|
||||||
|
// 7
|
||||||
|
backupReg0i = R127i.x;
|
||||||
|
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.w), intBitsToFloat(uf_remappedPS[8].y)));
|
||||||
|
R127i.x = clampFI32(R127i.x);
|
||||||
|
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(uf_remappedPS[9].y)));
|
||||||
|
R124i.z = ((intBitsToFloat(R2i.x) > intBitsToFloat(uf_remappedPS[9].x))?int(0xFFFFFFFF):int(0x0));
|
||||||
|
R1i.w = floatBitsToInt(intBitsToFloat(backupReg0i) * intBitsToFloat(PS0i));
|
||||||
|
PV1i.w = R1i.w;
|
||||||
|
R126i.w = floatBitsToInt(1.0 / intBitsToFloat(PV0i.x));
|
||||||
|
PS1i = R126i.w;
|
||||||
|
// 8
|
||||||
|
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),intBitsToFloat(PV1i.w)) + intBitsToFloat(R5i.x)));
|
||||||
|
PV0i.x = R126i.x;
|
||||||
|
R124i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),intBitsToFloat(PV1i.w)) + intBitsToFloat(R7i.y)));
|
||||||
|
PV0i.y = R124i.y;
|
||||||
|
R0i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),intBitsToFloat(PV1i.w)) + intBitsToFloat(R7i.z)));
|
||||||
|
PV0i.z = R0i.z;
|
||||||
|
PV0i.w = floatBitsToInt(-(intBitsToFloat(PV1i.w)) + 1.0);
|
||||||
|
PV0i.w = clampFI32(PV0i.w);
|
||||||
|
R125i.z = floatBitsToInt(1.0 / intBitsToFloat(R127i.w));
|
||||||
|
PS0i = R125i.z;
|
||||||
|
// 9
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.x),intBitsToFloat(R126i.y),intBitsToFloat(R126i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R127i.z)));
|
||||||
|
PS1i = R1i.z;
|
||||||
|
// 10
|
||||||
|
backupReg0i = R126i.y;
|
||||||
|
backupReg1i = R125i.z;
|
||||||
|
backupReg2i = R127i.x;
|
||||||
|
backupReg2i = R127i.x;
|
||||||
|
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),intBitsToFloat(PV1i.x)) + -(intBitsToFloat(R126i.x))));
|
||||||
|
PV0i.x = R127i.x;
|
||||||
|
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV1i.x)) + -(intBitsToFloat(R124i.y))));
|
||||||
|
PV0i.y = R126i.y;
|
||||||
|
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(PV1i.x)) + -(intBitsToFloat(R0i.z))));
|
||||||
|
PV0i.z = R125i.z;
|
||||||
|
R5i.w = floatBitsToInt(intBitsToFloat(R3i.y) * intBitsToFloat(backupReg1i));
|
||||||
|
R126i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg2i)),intBitsToFloat(backupReg2i)) + 1.0));
|
||||||
|
PS0i = R126i.z;
|
||||||
|
// 11
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R127i.w = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[6].z)) + intBitsToFloat(uf_remappedPS[7].z));
|
||||||
|
PS1i = R127i.w;
|
||||||
|
// 12
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R3i.x)),-(intBitsToFloat(R125i.y)),-(intBitsToFloat(R125i.y)),-0.0),vec4(intBitsToFloat(R2i.w),intBitsToFloat(R4i.y),intBitsToFloat(R2i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
|
||||||
|
// 13
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(R127i.y)));
|
||||||
|
R127i.y = floatBitsToInt(max(-(intBitsToFloat(R6i.z)), 0.0));
|
||||||
|
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(R126i.w));
|
||||||
|
PV1i.z = clampFI32(PV1i.z);
|
||||||
|
R0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(R126i.z)));
|
||||||
|
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
|
||||||
|
// 14
|
||||||
|
backupReg0i = R124i.z;
|
||||||
|
PV0i.x = floatBitsToInt(intBitsToFloat(uf_remappedPS[4].w) * intBitsToFloat(PS1i));
|
||||||
|
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),intBitsToFloat(PV1i.z)) + intBitsToFloat(R3i.x)));
|
||||||
|
PV0i.y = R123i.y;
|
||||||
|
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.y),intBitsToFloat(PV1i.z)) + intBitsToFloat(R125i.y)));
|
||||||
|
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV1i.z)) + intBitsToFloat(uf_remappedPS[6].z)));
|
||||||
|
R2i.w = ((backupReg0i == 0)?(R3i.z):(PV1i.x));
|
||||||
|
PS0i = R2i.w;
|
||||||
|
// 15
|
||||||
|
backupReg0i = R0i.w;
|
||||||
|
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + -(1.0));
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(PV0i.y)));
|
||||||
|
R126i.z = floatBitsToInt(min(intBitsToFloat(R127i.y), 1.0));
|
||||||
|
PV1i.w = PV0i.x;
|
||||||
|
PV1i.w = clampFI32(PV1i.w);
|
||||||
|
R124i.x = floatBitsToInt(-(intBitsToFloat(backupReg0i)) + 1.0);
|
||||||
|
PS1i = R124i.x;
|
||||||
|
// 16
|
||||||
|
backupReg0i = R127i.x;
|
||||||
|
backupReg1i = R126i.y;
|
||||||
|
backupReg2i = R125i.z;
|
||||||
|
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV1i.w)) + intBitsToFloat(R126i.x)));
|
||||||
|
PV0i.x = R127i.x;
|
||||||
|
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(PV1i.w)) + intBitsToFloat(R124i.y)));
|
||||||
|
PV0i.y = R126i.y;
|
||||||
|
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg2i),intBitsToFloat(PV1i.w)) + intBitsToFloat(R0i.z)));
|
||||||
|
PV0i.z = R125i.z;
|
||||||
|
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),intBitsToFloat(R124i.z)) + intBitsToFloat(PV1i.y)));
|
||||||
|
R127i.w = floatBitsToInt(1.0 / intBitsToFloat(PV1i.x));
|
||||||
|
PS0i = R127i.w;
|
||||||
|
// 17
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R124i.z = ((0.0 > intBitsToFloat(PS0i))?int(0xFFFFFFFF):int(0x0));
|
||||||
|
PS1i = R124i.z;
|
||||||
|
// 18
|
||||||
|
PV0i.y = floatBitsToInt(intBitsToFloat(R127i.w) * -(1.0));
|
||||||
|
R8i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(R124i.x)) + intBitsToFloat(R0i.w)));
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
|
||||||
|
PS0i = floatBitsToInt(tempResultf);
|
||||||
|
// 19
|
||||||
|
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.x = R3i.x;
|
||||||
|
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.y = R3i.y;
|
||||||
|
R0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.z = R0i.z;
|
||||||
|
R123i.w = ((R124i.z == 0)?(R127i.w):(PV0i.y));
|
||||||
|
PV1i.w = R123i.w;
|
||||||
|
R7i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.w)),intBitsToFloat(R125i.w)) + 1.0));
|
||||||
|
R7i.w = clampFI32(R7i.w);
|
||||||
|
PS1i = R7i.w;
|
||||||
|
// 20
|
||||||
|
R2i.x = floatBitsToInt(intBitsToFloat(R4i.x) + intBitsToFloat(PV1i.x));
|
||||||
|
PV0i.x = R2i.x;
|
||||||
|
R2i.y = floatBitsToInt(intBitsToFloat(R5i.y) + intBitsToFloat(PV1i.y));
|
||||||
|
PV0i.y = R2i.y;
|
||||||
|
R3i.z = floatBitsToInt(intBitsToFloat(R5i.z) + intBitsToFloat(PV1i.z));
|
||||||
|
PV0i.z = R3i.z;
|
||||||
|
R6i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x3dcccccd));
|
||||||
|
R6i.w = clampFI32(R6i.w);
|
||||||
|
R2i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x), intBitsToFloat(R2i.w)));
|
||||||
|
PS0i = R2i.z;
|
||||||
|
// 21
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R4i.y = tempi.x;
|
||||||
|
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y), intBitsToFloat(R2i.w)));
|
||||||
|
PS1i = R1i.y;
|
||||||
|
}
|
||||||
|
if( activeMaskStackC[1] == true ) {
|
||||||
|
// 0
|
||||||
|
backupReg0i = R0i.z;
|
||||||
|
R126i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R8i.y),intBitsToFloat(R8i.z),-0.0),vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(backupReg0i),0.0)));
|
||||||
|
R126i.x = clampFI32(R126i.x);
|
||||||
|
PV0i.x = R126i.x;
|
||||||
|
PV0i.y = R126i.x;
|
||||||
|
PV0i.z = R126i.x;
|
||||||
|
PV0i.w = R126i.x;
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(R4i.y));
|
||||||
|
PS0i = floatBitsToInt(tempResultf);
|
||||||
|
// 1
|
||||||
|
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.x = R127i.x;
|
||||||
|
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.y = R126i.y;
|
||||||
|
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.z = R125i.z;
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.z)));
|
||||||
|
PV1i.w = R123i.w;
|
||||||
|
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), intBitsToFloat(R2i.w)));
|
||||||
|
PS1i = R124i.x;
|
||||||
|
// 2
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R8i.y),intBitsToFloat(R8i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
|
||||||
|
tempi.x = clampFI32(tempi.x);
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R127i.w = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
|
||||||
|
PS0i = R127i.w;
|
||||||
|
// 3
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.y),intBitsToFloat(R125i.z),0.0)));
|
||||||
|
tempi.x = clampFI32(tempi.x);
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
|
||||||
|
// 4
|
||||||
|
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.y), intBitsToFloat(R127i.w)));
|
||||||
|
R126i.y = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
|
||||||
|
PV0i.y = R126i.y;
|
||||||
|
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.w),intBitsToFloat(PS1i)) + 1.0));
|
||||||
|
PV0i.z = R123i.z;
|
||||||
|
PV0i.w = floatBitsToInt(intBitsToFloat(R2i.z) * intBitsToFloat(0x3ea2f983));
|
||||||
|
R125i.z = floatBitsToInt(intBitsToFloat(R1i.y) * intBitsToFloat(0x3ea2f983));
|
||||||
|
PS0i = R125i.z;
|
||||||
|
// 5
|
||||||
|
backupReg0i = R124i.x;
|
||||||
|
backupReg1i = R0i.w;
|
||||||
|
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(PV0i.y)));
|
||||||
|
PV1i.x = R124i.x;
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.z)));
|
||||||
|
R124i.z = floatBitsToInt((intBitsToFloat(R1i.w) * intBitsToFloat(0x41200000) + 1.0));
|
||||||
|
R124i.z = clampFI32(R124i.z);
|
||||||
|
PV1i.w = floatBitsToInt(intBitsToFloat(backupReg0i) * intBitsToFloat(0x3ea2f983));
|
||||||
|
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(PV0i.w)));
|
||||||
|
PS1i = R2i.x;
|
||||||
|
// 6
|
||||||
|
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(R125i.z)));
|
||||||
|
R2i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(PV1i.w)));
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PV1i.x)));
|
||||||
|
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.y));
|
||||||
|
// 7
|
||||||
|
backupReg0i = R124i.x;
|
||||||
|
R124i.x = floatBitsToInt(intBitsToFloat(R6i.y) * intBitsToFloat(PS0i));
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.w)));
|
||||||
|
R2i.w = 0;
|
||||||
|
// 8
|
||||||
|
R123i.y = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x3f75c28f) + intBitsToFloat(0x3d23d70a)));
|
||||||
|
PV0i.y = R123i.y;
|
||||||
|
// 9
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(PV0i.y)));
|
||||||
|
// 10
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PV1i.z)));
|
||||||
|
// 11
|
||||||
|
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * 0.25);
|
||||||
|
// 12
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PV1i.x)));
|
||||||
|
// 13
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PV0i.w)));
|
||||||
|
// 14
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(PV1i.z)));
|
||||||
|
// 15
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.w), intBitsToFloat(PV0i.y)));
|
||||||
|
// 16
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), intBitsToFloat(PV1i.x)));
|
||||||
|
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y), intBitsToFloat(PV1i.x)));
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x), intBitsToFloat(PV1i.x)));
|
||||||
|
// 17
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.w), intBitsToFloat(PV0i.w)));
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.w), intBitsToFloat(PV0i.y)));
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.w), intBitsToFloat(PV0i.z)));
|
||||||
|
// 18
|
||||||
|
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.w), intBitsToFloat(PV1i.w)));
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.w), intBitsToFloat(PV1i.x)));
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.w), intBitsToFloat(PV1i.z)));
|
||||||
|
// 19
|
||||||
|
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PV0i.y)));
|
||||||
|
R0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PV0i.x)));
|
||||||
|
R0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PV0i.w)));
|
||||||
|
// 20
|
||||||
|
R1i.xyz = ivec3(R2i.x,R2i.y,R2i.z);
|
||||||
|
R1i.w = R2i.w;
|
||||||
|
// 21
|
||||||
|
R2i.xyz = ivec3(R0i.x,R0i.y,R0i.z);
|
||||||
|
R2i.w = R0i.w;
|
||||||
|
}
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
passPixelColor1 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w));
|
||||||
|
colhsv = rgb2hsv(passPixelColor1.rgb);
|
||||||
|
passPixelColor1.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor1.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,202 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 99fc7f42b65ca284
|
||||||
|
// Shrine - elevator
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21106000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fc9000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x21412000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem2;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem5;
|
||||||
|
layout(location = 5) in vec4 passParameterSem8;
|
||||||
|
layout(location = 6) in vec4 passParameterSem9;
|
||||||
|
layout(location = 7) in vec4 passParameterSem11;
|
||||||
|
layout(location = 8) in vec4 passParameterSem12;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R122f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem2;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem5;
|
||||||
|
R5f = passParameterSem8;
|
||||||
|
R6f = passParameterSem9;
|
||||||
|
R7f = passParameterSem11;
|
||||||
|
R8f = passParameterSem12;
|
||||||
|
R9f.xy = (texture(textureUnitPS0, R5f.xy).xy);
|
||||||
|
R5f.xy = (texture(textureUnitPS0, R5f.zw).xy);
|
||||||
|
// 0
|
||||||
|
PV0f.x = R9f.y + R5f.y;
|
||||||
|
PV0f.y = R9f.x + R5f.x;
|
||||||
|
PV0f.z = -(intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[0].w);
|
||||||
|
R126f.w = 1.0;
|
||||||
|
R127f.w = -(R4f.y) + R4f.z;
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R9f.x = R0f.y + -(R1f.y);
|
||||||
|
PV1f.y = PV0f.x + -(1.0);
|
||||||
|
PV1f.z = PV0f.y + -(1.0);
|
||||||
|
R5f.w = R0f.x + -(R1f.x);
|
||||||
|
R5f.y = 1.0 / PV0f.z;
|
||||||
|
PS1f = R5f.y;
|
||||||
|
// 2
|
||||||
|
R0f.x = R0f.w + PV1f.z;
|
||||||
|
R0f.y = R0f.z + -(R1f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.y, PV1f.z);
|
||||||
|
PV0f.w = mul_nonIEEE(R3f.y, PV1f.y);
|
||||||
|
R3f.z = 1.0 / R127f.w;
|
||||||
|
PS0f = R3f.z;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R6f.x;
|
||||||
|
backupReg1f = R6f.y;
|
||||||
|
R6f.x = backupReg0f + PV0f.z;
|
||||||
|
R6f.y = backupReg1f + PV0f.w;
|
||||||
|
R0f.z = mul_nonIEEE(R126f.w, intBitsToFloat(uf_remappedPS[1].w));
|
||||||
|
R5f.x = R2f.z * R2f.z;
|
||||||
|
PS1f = R5f.x;
|
||||||
|
R5f.z = (texture(textureUnitPS2, R6f.xy).w);
|
||||||
|
R0f.w = (texture(textureUnitPS1, R0f.xx).x);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
tempf.x = dot(vec4(R2f.x,R2f.y,R5f.x,-0.0),vec4(R2f.x,R2f.y,1.0,0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
R127f.y = backupReg0f + R5f.z;
|
||||||
|
R127f.y /= 2.0;
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
tempf.x = dot(vec4(R8f.x,R8f.y,R8f.z,backupReg0f),vec4(intBitsToFloat(uf_remappedPS[1].x),intBitsToFloat(uf_remappedPS[1].y),intBitsToFloat(uf_remappedPS[1].z),1.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
R126f.y = tempf.x;
|
||||||
|
tempResultf = 1.0 / sqrt(PV0f.x);
|
||||||
|
PS1f = tempResultf;
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(R2f.x, PS1f);
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, PS1f);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, PS1f);
|
||||||
|
R126f.w = R127f.y + intBitsToFloat(0xbf333333);
|
||||||
|
R126f.w = clamp(R126f.w, 0.0, 1.0);
|
||||||
|
PV0f.w = R126f.w;
|
||||||
|
R127f.x = (mul_nonIEEE(R5f.w,R0f.w) + R1f.x);
|
||||||
|
PS0f = R127f.x;
|
||||||
|
// 3
|
||||||
|
tempf.x = dot(vec4(R7f.x,R7f.y,R7f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
R122f.x = (mul_nonIEEE(R5f.z,R127f.y) + PV0f.w);
|
||||||
|
PS1f = R122f.x;
|
||||||
|
// 4
|
||||||
|
PV0f.x = max(PV1f.x, -(PV1f.x));
|
||||||
|
PV0f.y = -(R4f.y) + -(R126f.y);
|
||||||
|
R127f.z = mul_nonIEEE(R1f.w, PS1f);
|
||||||
|
R127f.z = clamp(R127f.z, 0.0, 1.0);
|
||||||
|
PV0f.w = R127f.x * intBitsToFloat(0x41200000);
|
||||||
|
// 5
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
backupReg1f = R127f.x;
|
||||||
|
R127f.x = (mul_nonIEEE(R9f.x,R0f.w) + R1f.y);
|
||||||
|
PV1f.x = R127f.x;
|
||||||
|
PV1f.y = mul_nonIEEE(PV0f.y, R3f.z);
|
||||||
|
PV1f.y = clamp(PV1f.y, 0.0, 1.0);
|
||||||
|
R126f.z = (mul_nonIEEE(backupReg0f,R0f.w) + R1f.z);
|
||||||
|
PV1f.z = R126f.z;
|
||||||
|
PV1f.w = PV0f.x + -(intBitsToFloat(uf_remappedPS[0].z));
|
||||||
|
R0f.x = (mul_nonIEEE(PV0f.w,R126f.w) + backupReg1f);
|
||||||
|
PS1f = R0f.x;
|
||||||
|
// 6
|
||||||
|
PV0f.x = PV1f.w * R5f.y;
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
R126f.y = mul_nonIEEE(R127f.z, PV1f.y);
|
||||||
|
R126f.y = clamp(R126f.y, 0.0, 1.0);
|
||||||
|
PV0f.z = PV1f.x * intBitsToFloat(0x41200000);
|
||||||
|
PV0f.w = PV1f.z * intBitsToFloat(0x41200000);
|
||||||
|
// 7
|
||||||
|
R0f.y = (mul_nonIEEE(PV0f.z,R126f.w) + R127f.x);
|
||||||
|
R123f.z = (intBitsToFloat(0xc0000000) * PV0f.x + intBitsToFloat(0x40400000));
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R0f.z = (mul_nonIEEE(PV0f.w,R126f.w) + R126f.z);
|
||||||
|
PS1f = R0f.z;
|
||||||
|
// 8
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.w, PV1f.z);
|
||||||
|
// 9
|
||||||
|
PV1f.x = mul_nonIEEE(R126f.y, PV0f.y);
|
||||||
|
// 10
|
||||||
|
R0f.w = mul_nonIEEE(R3f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,141 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 9aacad682248145f
|
||||||
|
// Teleportation - part 1
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x216a1000 res 64x64x1 dim 1 tm: 4 format 0001 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x211a9000 res 32x64x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 0 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem7;
|
||||||
|
layout(location = 5) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R122f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem7;
|
||||||
|
R5f = passParameterSem8;
|
||||||
|
R3f.w = (texture(textureUnitPS0, R5f.xy).w);
|
||||||
|
R5f.xyzw = (texture(textureUnitPS1, R5f.zw).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R5f.z;
|
||||||
|
PV0f.x = mul_nonIEEE(R3f.w, R5f.w);
|
||||||
|
R3f.y = mul_nonIEEE(R3f.w, R5f.x);
|
||||||
|
R5f.z = mul_nonIEEE(R3f.w, backupReg0f);
|
||||||
|
R5f.w = mul_nonIEEE(R3f.w, R5f.y);
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
R5f.x = mul_nonIEEE(R2f.x, PS0f);
|
||||||
|
R5f.y = mul_nonIEEE(R2f.y, PS0f);
|
||||||
|
R123f.z = (mul_nonIEEE(R4f.w,PV0f.x) + -(R0f.w))*4.0;
|
||||||
|
R123f.z = clamp(R123f.z, 0.0, 1.0);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R3f.w = R0f.x + -(R1f.x);
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
backupReg1f = R0f.y;
|
||||||
|
R0f.x = mul_nonIEEE(R1f.w, PV1f.z);
|
||||||
|
R0f.x = clamp(R0f.x, 0.0, 1.0);
|
||||||
|
R0f.y = R2f.z * PS1f;
|
||||||
|
R0f.z = backupReg0f + -(R1f.z);
|
||||||
|
R0f.w = backupReg1f + -(R1f.y);
|
||||||
|
R2f.z = 1.0 / intBitsToFloat(uf_remappedPS[0].y);
|
||||||
|
PS0f = R2f.z;
|
||||||
|
R5f.x = (texture(textureUnitPS4, R5f.xy).x);
|
||||||
|
// 0
|
||||||
|
R127f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R5f.x) + intBitsToFloat(uf_remappedPS[1].x));
|
||||||
|
R123f.y = (mul_nonIEEE(R3f.w,R3f.y) + R1f.x);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
R123f.z = (mul_nonIEEE(R0f.y,intBitsToFloat(uf_remappedPS[1].w)) + -(intBitsToFloat(uf_remappedPS[1].y)));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R0f.w,R5f.w) + R1f.y);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
R122f.x = (mul_nonIEEE(R0f.z,R5f.z) + R1f.z);
|
||||||
|
PS0f = R122f.x;
|
||||||
|
// 1
|
||||||
|
backupReg0f = R4f.x;
|
||||||
|
backupReg1f = R4f.y;
|
||||||
|
backupReg2f = R4f.z;
|
||||||
|
R4f.x = mul_nonIEEE(backupReg0f, PV0f.y);
|
||||||
|
R4f.y = mul_nonIEEE(backupReg1f, PV0f.w);
|
||||||
|
R4f.z = mul_nonIEEE(backupReg2f, PS0f);
|
||||||
|
PS1f = 1.0 / PV0f.z;
|
||||||
|
// 2
|
||||||
|
PV0f.y = -(intBitsToFloat(uf_remappedPS[1].z)) * PS1f;
|
||||||
|
// 3
|
||||||
|
PV1f.w = -(PV0f.y) + R127f.x;
|
||||||
|
// 4
|
||||||
|
PV0f.y = PV1f.w * R2f.z;
|
||||||
|
PV0f.y = clamp(PV0f.y, 0.0, 1.0);
|
||||||
|
// 5
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV1f.x = mul_nonIEEE(backupReg0f, PV0f.y);
|
||||||
|
// 6
|
||||||
|
R4f.w = mul_nonIEEE(R3f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R4f.x, R4f.y, R4f.z, R4f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,190 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader 9c9c75d87bb9b4ef
|
||||||
|
// Shrine - ceiling decorations
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb10a3000 res 512x256x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb10d5000 res 512x256x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb10b4000 res 512x256x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xb10b4000 res 512x256x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xb09e5000 res 4012x2048x1 dim 1 tm: 4 format 0034 compSel: 0 4 4 4 mipView: 0x0 (num 0xc) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem7;
|
||||||
|
layout(location = 3) in vec4 passParameterSem3;
|
||||||
|
layout(location = 4) in vec4 passParameterSem4;
|
||||||
|
layout(location = 5) in vec4 passParameterSem5;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R10f = vec4(0.0);
|
||||||
|
vec4 R11f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem7;
|
||||||
|
R3f = passParameterSem3;
|
||||||
|
R4f = passParameterSem4;
|
||||||
|
R5f = passParameterSem5;
|
||||||
|
R6f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R0f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R2f.y = (texture(textureUnitPS7, R2f.xy).x);
|
||||||
|
R1f.x = (texture(textureUnitPS6, R1f.xy).w);
|
||||||
|
R7f.xyzw = (texture(textureUnitPS3, R0f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R3f.y, R4f.z);
|
||||||
|
R127f.y = (R6f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.y = R127f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.x, R4f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(R3f.z, R4f.x);
|
||||||
|
R127f.x = (R6f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.x;
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(-(R4f.z),R3f.x) + PV0f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(-(R4f.y),R3f.z) + PV0f.x);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
R123f.z = (mul_nonIEEE(-(R4f.x),R3f.y) + PV0f.z);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.y, PV0f.y);
|
||||||
|
PS1f = mul_nonIEEE(R4f.w, PS0f);
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.y, PS1f);
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.x, PS1f);
|
||||||
|
R123f.z = (mul_nonIEEE(R127f.x,R127f.x) + PV1f.w);
|
||||||
|
R123f.z = clamp(R123f.z, 0.0, 1.0);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.z, PS1f);
|
||||||
|
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), backupReg0f);
|
||||||
|
PS0f = R127f.z;
|
||||||
|
// 3
|
||||||
|
R127f.x = (mul_nonIEEE(R4f.z,R127f.y) + PV0f.w)/2.0;
|
||||||
|
PV1f.y = -(PV0f.z) + 1.0;
|
||||||
|
R126f.z = (mul_nonIEEE(R4f.y,R127f.y) + PV0f.y)/2.0;
|
||||||
|
R127f.w = (mul_nonIEEE(R4f.x,R127f.y) + PV0f.x)/2.0;
|
||||||
|
R127f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.w);
|
||||||
|
PS1f = R127f.y;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
R126f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.z);
|
||||||
|
R126f.y = R6f.z * intBitsToFloat(0x427f0000);
|
||||||
|
R127f.z = mul_nonIEEE(R5f.x, R2f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), backupReg0f);
|
||||||
|
PS0f = sqrt(PV1f.y);
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg1f = R126f.z;
|
||||||
|
R127f.x = (mul_nonIEEE(R3f.x,PS0f) + R127f.w);
|
||||||
|
PV1f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.y);
|
||||||
|
R126f.z = (mul_nonIEEE(R3f.z,PS0f) + backupReg0f);
|
||||||
|
R127f.w = (mul_nonIEEE(R3f.y,PS0f) + backupReg1f);
|
||||||
|
PS1f = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.w);
|
||||||
|
// 6
|
||||||
|
backupReg0f = R1f.x;
|
||||||
|
backupReg1f = R126f.x;
|
||||||
|
R126f.x = floor(R126f.y);
|
||||||
|
R126f.x *= 4.0;
|
||||||
|
R1f.y = mul_nonIEEE(R1f.x, PV1f.y);
|
||||||
|
R1f.z = mul_nonIEEE(R1f.x, PS1f);
|
||||||
|
R0f.w = R7f.w;
|
||||||
|
R1f.x = mul_nonIEEE(backupReg0f, backupReg1f);
|
||||||
|
PS0f = R1f.x;
|
||||||
|
// 7
|
||||||
|
R3f.x = mul_nonIEEE(R7f.x, R127f.z);
|
||||||
|
R3f.y = mul_nonIEEE(R7f.y, R127f.z);
|
||||||
|
R3f.z = mul_nonIEEE(R7f.z, R127f.z);
|
||||||
|
R1f.w = 1.0;
|
||||||
|
R0f.x = intBitsToFloat(0x3c808081);
|
||||||
|
PS1f = R0f.x;
|
||||||
|
// 8
|
||||||
|
R7f.x = R127f.x + 0.5;
|
||||||
|
R0f.y = intBitsToFloat(uf_remappedPS[2].z);
|
||||||
|
R7f.z = R126f.z + 0.5;
|
||||||
|
R3f.w = intBitsToFloat(0x3b808081);
|
||||||
|
R7f.y = R127f.w + 0.5;
|
||||||
|
PS0f = R7f.y;
|
||||||
|
// 9
|
||||||
|
R7f.w = (R126f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
// 10
|
||||||
|
R11f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R11f.w = R1f.w;
|
||||||
|
// 11
|
||||||
|
R10f.xyz = vec3(R7f.x,R7f.y,R7f.z);
|
||||||
|
R10f.w = R7f.w;
|
||||||
|
// 12
|
||||||
|
R9f.xyz = vec3(R3f.x,R3f.y,R3f.z);
|
||||||
|
R9f.w = R3f.w;
|
||||||
|
// 13
|
||||||
|
R8f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R8f.w = R0f.w;
|
||||||
|
// export
|
||||||
|
if( ((vec4(R8f.x, R8f.y, R8f.z, R8f.w)).a >= uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
passPixelColor1 = vec4(R9f.x, R9f.y, R9f.z, R9f.w);
|
||||||
|
passPixelColor3 = vec4(R10f.x, R10f.y, R10f.z, R10f.w);
|
||||||
|
passPixelColor5 = vec4(R11f.x, R11f.y, R11f.z, R11f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,174 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader a02a462f9ba59f2e
|
||||||
|
// Sheikah Tower - inactive - middle part
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb22d2000 res 512x256x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb2305000 res 128x64x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb22e4000 res 512x256x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R0f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R5f.xyzw = (texture(textureUnitPS3, R0f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
R127f.x = (R4f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R127f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
R127f.w = (R4f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.z);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R123f.w = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.y);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = mul_nonIEEE(R3f.w, PS0f);
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.w, PS1f);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.w,R127f.w) + PV1f.z);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(PV1f.y, PS1f);
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.x, PS1f);
|
||||||
|
R127f.y = R4f.z * intBitsToFloat(0x427f0000);
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = -(PV0f.y) + 1.0;
|
||||||
|
R126f.y = (mul_nonIEEE(R3f.y,backupReg0f) + PV0f.z)/2.0;
|
||||||
|
R126f.z = (mul_nonIEEE(R3f.x,backupReg0f) + PV0f.x)/2.0;
|
||||||
|
R127f.w = (mul_nonIEEE(R3f.z,backupReg0f) + PV0f.w)/2.0;
|
||||||
|
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R0f.w);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
R126f.x = floor(R127f.y);
|
||||||
|
R126f.x *= 4.0;
|
||||||
|
PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), R0f.w);
|
||||||
|
R0f.z = mul_nonIEEE(R1f.x, R5f.z);
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg0f);
|
||||||
|
R0f.x = mul_nonIEEE(R1f.x, R5f.x);
|
||||||
|
PS0f = R0f.x;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R1f.x;
|
||||||
|
R1f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.z);
|
||||||
|
R1f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.w);
|
||||||
|
R1f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.y);
|
||||||
|
R0f.y = mul_nonIEEE(backupReg0f, R5f.y);
|
||||||
|
PS1f = R0f.y;
|
||||||
|
// 6
|
||||||
|
R5f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R5f.y = intBitsToFloat(uf_remappedPS[2].z);
|
||||||
|
R1f.w = 1.0;
|
||||||
|
PS0f = sqrt(R127f.x);
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 7
|
||||||
|
R123f.x = (mul_nonIEEE(R2f.z,PS0f) + R127f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.z = (mul_nonIEEE(R2f.y,PS0f) + R126f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R2f.x,PS0f) + R126f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
R0f.w = intBitsToFloat(0x3b808081);
|
||||||
|
PS1f = R0f.w;
|
||||||
|
// 8
|
||||||
|
R2f.xyz = vec3(PV1f.w,PV1f.z,PV1f.x) + vec3(0.5,0.5,0.5);
|
||||||
|
R2f.w = (R126f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
// 9
|
||||||
|
R9f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R9f.w = R1f.w;
|
||||||
|
// 10
|
||||||
|
R8f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R8f.w = R2f.w;
|
||||||
|
// 11
|
||||||
|
R7f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R7f.w = R0f.w;
|
||||||
|
// 12
|
||||||
|
R6f.xyz = vec3(R5f.x,R5f.y,R5f.z);
|
||||||
|
R6f.w = R5f.w;
|
||||||
|
// export
|
||||||
|
if( ((vec4(R6f.x, R6f.y, R6f.z, R6f.w)).a >= uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor1 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor3 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
passPixelColor5 = vec4(R9f.x, R9f.y, R9f.z, R9f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,90 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader a11251f0bffe8631
|
||||||
|
// Shrine - elevator particles 3
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fd4000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem8;
|
||||||
|
R3f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV0f.x = mul_nonIEEE(R0f.w, R3f.w);
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
R127f.y = mul_nonIEEE(R3f.y, R3f.y);
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.x, R3f.x);
|
||||||
|
R127f.w = mul_nonIEEE(R3f.z, R3f.z);
|
||||||
|
PS0f = backupReg0f + -(R1f.x);
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
R0f.x = (mul_nonIEEE(PS0f,PV0f.z) + R1f.x);
|
||||||
|
PV1f.y = R0f.z + -(R1f.z);
|
||||||
|
PV1f.z = backupReg0f + -(R1f.y);
|
||||||
|
R0f.w = mul_nonIEEE(R2f.x, PV0f.x);
|
||||||
|
// 2
|
||||||
|
R0f.y = (mul_nonIEEE(PV1f.z,R127f.y) + R1f.y);
|
||||||
|
R0f.z = (mul_nonIEEE(PV1f.y,R127f.w) + R1f.z);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,155 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader a54bdb88a57b9be9
|
||||||
|
// Bomb - explosion particles 1
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fc2000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fd4000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 2 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x20fc9000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem7;
|
||||||
|
layout(location = 5) in vec4 passParameterSem8;
|
||||||
|
layout(location = 6) in vec4 passParameterSem9;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R122f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem7;
|
||||||
|
R5f = passParameterSem8;
|
||||||
|
R6f = passParameterSem9;
|
||||||
|
R7f.xw = (texture(textureUnitPS0, R5f.xy).xw);
|
||||||
|
R6f.xyzw = (texture(textureUnitPS2, R6f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R3f.y, intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
R123f.y = (R7f.w * 2.0 + -(1.0));
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
R123f.z = (R7f.x * 2.0 + -(1.0));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
PV0f.w = mul_nonIEEE(R3f.y, intBitsToFloat(uf_remappedPS[0].y));
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
R5f.x = (mul_nonIEEE(PV0f.x,PV0f.z) + R5f.z);
|
||||||
|
R5f.y = (mul_nonIEEE(PV0f.w,PV0f.y) + R5f.w);
|
||||||
|
R5f.z = mul_nonIEEE(R2f.x, PS0f);
|
||||||
|
R5f.w = mul_nonIEEE(R2f.y, PS0f);
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
R7f.x = mul_nonIEEE(R6f.z, R6f.z);
|
||||||
|
R2f.y = R2f.z * PS1f;
|
||||||
|
R2f.z = mul_nonIEEE(R6f.y, R6f.y);
|
||||||
|
R2f.w = mul_nonIEEE(R6f.x, R6f.x);
|
||||||
|
R3f.z = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS0f = R3f.z;
|
||||||
|
R2f.x = (texture(textureUnitPS4, R5f.zw).x);
|
||||||
|
R5f.xyzw = (texture(textureUnitPS1, R5f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R5f.w, R6f.w);
|
||||||
|
R127f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R2f.x) + intBitsToFloat(uf_remappedPS[2].x));
|
||||||
|
R123f.z = (mul_nonIEEE(R2f.y,intBitsToFloat(uf_remappedPS[2].w)) + -(intBitsToFloat(uf_remappedPS[2].y)));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R127f.w = (mul_nonIEEE(R5f.x,R5f.x) + R2f.w);
|
||||||
|
R126f.w = (mul_nonIEEE(R5f.y,R5f.y) + R2f.z);
|
||||||
|
PS0f = R126f.w;
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
R127f.x = (mul_nonIEEE(R5f.z,R5f.z) + R7f.x);
|
||||||
|
PV1f.y = R0f.x + -(R1f.x);
|
||||||
|
R123f.z = (mul_nonIEEE(R4f.w,PV0f.x) + -(R0f.w));
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = backupReg0f + -(R1f.y);
|
||||||
|
PS1f = 1.0 / PV0f.z;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
R126f.x = mul_nonIEEE(R1f.w, PV1f.z);
|
||||||
|
R126f.x = clamp(R126f.x, 0.0, 1.0);
|
||||||
|
PV0f.y = -(intBitsToFloat(uf_remappedPS[2].z)) * PS1f;
|
||||||
|
PV0f.z = backupReg0f + -(R1f.z);
|
||||||
|
R123f.w = (mul_nonIEEE(PV1f.y,R127f.w) + R1f.x);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
R122f.x = (mul_nonIEEE(PV1f.w,R126f.w) + R1f.y);
|
||||||
|
PS0f = R122f.x;
|
||||||
|
// 3
|
||||||
|
R123f.x = (mul_nonIEEE(PV0f.z,R127f.x) + R1f.z);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R1f.y = mul_nonIEEE(R4f.y, PS0f);
|
||||||
|
PV1f.w = -(PV0f.y) + R127f.y;
|
||||||
|
R1f.x = mul_nonIEEE(R4f.x, PV0f.w);
|
||||||
|
PS1f = R1f.x;
|
||||||
|
// 4
|
||||||
|
PV0f.y = PV1f.w * R3f.z;
|
||||||
|
PV0f.y = clamp(PV0f.y, 0.0, 1.0);
|
||||||
|
R1f.z = mul_nonIEEE(R4f.z, PV1f.x);
|
||||||
|
// 5
|
||||||
|
PV1f.x = mul_nonIEEE(R126f.x, PV0f.y);
|
||||||
|
// 6
|
||||||
|
R1f.w = mul_nonIEEE(R3f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R1f.x, R1f.y, R1f.z, R1f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,123 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader a6ea718e4c60e157
|
||||||
|
// Bomb - trails 2
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21632000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R4f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R4f.y;
|
||||||
|
backupReg0f = R4f.y;
|
||||||
|
R127f.x = mul_nonIEEE(R4f.x, R4f.x);
|
||||||
|
R4f.y = mul_nonIEEE(R4f.z, R4f.z);
|
||||||
|
PV0f.z = -(R0f.w) + R4f.w;
|
||||||
|
PV0f.z *= 4.0;
|
||||||
|
PV0f.z = clamp(PV0f.z, 0.0, 1.0);
|
||||||
|
R3f.w = mul_nonIEEE(backupReg0f, backupReg0f);
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV1f.x = R2f.z * PS0f;
|
||||||
|
R3f.y = mul_nonIEEE(R1f.w, PV0f.z);
|
||||||
|
R3f.y = clamp(R3f.y, 0.0, 1.0);
|
||||||
|
PV1f.z = backupReg0f + -(R1f.x);
|
||||||
|
R4f.w = R0f.y + -(R1f.y);
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
R0f.x = mul_nonIEEE(R2f.x, PS1f);
|
||||||
|
R0f.y = mul_nonIEEE(R2f.y, PS1f);
|
||||||
|
R0f.z = (mul_nonIEEE(PV1f.x,intBitsToFloat(uf_remappedPS[0].w)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R0f.w = backupReg0f + -(R1f.z);
|
||||||
|
R2f.x = (mul_nonIEEE(PV1f.z,R127f.x) + R1f.x);
|
||||||
|
PS0f = R2f.x;
|
||||||
|
R0f.y = (texture(textureUnitPS4, R0f.xy).x);
|
||||||
|
// 0
|
||||||
|
R127f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.y) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
R2f.y = (mul_nonIEEE(R4f.w,R3f.w) + R1f.y);
|
||||||
|
R2f.z = (mul_nonIEEE(R0f.w,R4f.y) + R1f.z);
|
||||||
|
PS0f = 1.0 / R0f.z;
|
||||||
|
// 1
|
||||||
|
PV1f.w = -(intBitsToFloat(uf_remappedPS[0].z)) * PS0f;
|
||||||
|
R127f.z = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 2
|
||||||
|
PV0f.w = -(PV1f.w) + R127f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.y = PV0f.w * R127f.z;
|
||||||
|
PV1f.y = clamp(PV1f.y, 0.0, 1.0);
|
||||||
|
// 4
|
||||||
|
PV0f.x = mul_nonIEEE(R3f.y, PV1f.y);
|
||||||
|
// 5
|
||||||
|
R2f.w = mul_nonIEEE(R3f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R2f.x, R2f.y, R2f.z, R2f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,121 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader a6eb708e4b616557
|
||||||
|
// Bomb - explosion particles 2
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21447000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 1 1 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R4f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R4f.y;
|
||||||
|
backupReg0f = R4f.y;
|
||||||
|
R127f.x = mul_nonIEEE(R4f.x, R4f.x);
|
||||||
|
R4f.y = mul_nonIEEE(R4f.z, R4f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R0f.w, R4f.w);
|
||||||
|
R3f.w = mul_nonIEEE(backupReg0f, backupReg0f);
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV1f.x = R2f.z * PS0f;
|
||||||
|
R3f.y = mul_nonIEEE(R1f.w, PV0f.z);
|
||||||
|
R3f.y = clamp(R3f.y, 0.0, 1.0);
|
||||||
|
PV1f.z = backupReg0f + -(R1f.x);
|
||||||
|
R4f.w = R0f.y + -(R1f.y);
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
R0f.x = mul_nonIEEE(R2f.x, PS1f);
|
||||||
|
R0f.y = mul_nonIEEE(R2f.y, PS1f);
|
||||||
|
R0f.z = (mul_nonIEEE(PV1f.x,intBitsToFloat(uf_remappedPS[0].w)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R0f.w = backupReg0f + -(R1f.z);
|
||||||
|
R2f.x = (mul_nonIEEE(PV1f.z,R127f.x) + R1f.x);
|
||||||
|
PS0f = R2f.x;
|
||||||
|
R0f.y = (texture(textureUnitPS4, R0f.xy).x);
|
||||||
|
// 0
|
||||||
|
R127f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.y) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
R2f.y = (mul_nonIEEE(R4f.w,R3f.w) + R1f.y);
|
||||||
|
R2f.z = (mul_nonIEEE(R0f.w,R4f.y) + R1f.z);
|
||||||
|
PS0f = 1.0 / R0f.z;
|
||||||
|
// 1
|
||||||
|
PV1f.w = -(intBitsToFloat(uf_remappedPS[0].z)) * PS0f;
|
||||||
|
R127f.z = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 2
|
||||||
|
PV0f.w = -(PV1f.w) + R127f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.y = PV0f.w * R127f.z;
|
||||||
|
PV1f.y = clamp(PV1f.y, 0.0, 1.0);
|
||||||
|
// 4
|
||||||
|
PV0f.x = mul_nonIEEE(R3f.y, PV1f.y);
|
||||||
|
// 5
|
||||||
|
R2f.w = mul_nonIEEE(R3f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R2f.x, R2f.y, R2f.z, R2f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,103 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader a95fbb49ae2c8f46
|
||||||
|
// Guardian scout fire
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x211ac000 res 256x256x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x211ac000 res 256x256x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem8;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
|
||||||
|
R3f.xyzw = (texture(textureUnitPS1, R3f.zw).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R4f.w, R3f.w);
|
||||||
|
PV0f.y = mul_nonIEEE(R4f.x, R4f.x);
|
||||||
|
R127f.z = mul_nonIEEE(R4f.y, R4f.y);
|
||||||
|
R127f.w = mul_nonIEEE(R4f.z, R4f.z);
|
||||||
|
PS0f = mul_nonIEEE(R3f.x, R3f.x);
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV1f.x = mul_nonIEEE(R3f.z, R3f.z);
|
||||||
|
PV1f.y = mul_nonIEEE(R3f.y, R3f.y);
|
||||||
|
R126f.z = mul_nonIEEE(R0f.w, PV0f.x);
|
||||||
|
R126f.z = clamp(R126f.z, 0.0, 1.0);
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.y, PS0f);
|
||||||
|
PS1f = backupReg0f + -(R1f.x);
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
PV0f.x = R0f.y + -(R1f.y);
|
||||||
|
PV0f.y = mul_nonIEEE(R127f.w, PV1f.x);
|
||||||
|
PV0f.z = mul_nonIEEE(R127f.z, PV1f.y);
|
||||||
|
PV0f.w = backupReg0f + -(R1f.z);
|
||||||
|
R0f.x = (mul_nonIEEE(PS1f,PV1f.w) + R1f.x);
|
||||||
|
PS0f = R0f.x;
|
||||||
|
// 3
|
||||||
|
R0f.y = (mul_nonIEEE(PV0f.x,PV0f.z) + R1f.y);
|
||||||
|
R0f.z = (mul_nonIEEE(PV0f.w,PV0f.y) + R1f.z);
|
||||||
|
R0f.w = mul_nonIEEE(R2f.x, R126f.z);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,179 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader b2cf5924b04ea6a4
|
||||||
|
// Shrine - metal chests
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb915a000 res 512x512x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb9198000 res 256x256x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb9197000 res 32x32x1 dim 1 tm: 2 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x6) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xb917b000 res 400x400x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = 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 = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R5f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R4f.x = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R0f.w = (texture(textureUnitPS6, R0f.xy).x);
|
||||||
|
R0f.xyz = (texture(textureUnitPS3, R0f.xy).xyz);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
R127f.z = (R5f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.z = R127f.z;
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
R127f.x = (R5f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.x;
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
PV1f.y = mul_nonIEEE(PV0f.z, PV0f.z);
|
||||||
|
R123f.z = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.x);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = mul_nonIEEE(R3f.w, PS0f);
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.w, PS1f);
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.x, PS1f);
|
||||||
|
PV0f.z = mul_nonIEEE(PV1f.z, PS1f);
|
||||||
|
R123f.w = (mul_nonIEEE(R127f.x,R127f.x) + PV1f.y);
|
||||||
|
R123f.w = clamp(R123f.w, 0.0, 1.0);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
R127f.x = intBitsToFloat(0x427f0000) * R4f.x;
|
||||||
|
PS0f = R127f.x;
|
||||||
|
// 3
|
||||||
|
R126f.x = (mul_nonIEEE(R3f.z,R127f.z) + PV0f.y)/2.0;
|
||||||
|
R127f.y = (mul_nonIEEE(R3f.x,R127f.z) + PV0f.x)/2.0;
|
||||||
|
PV1f.z = -(PV0f.w) + 1.0;
|
||||||
|
R127f.w = (mul_nonIEEE(R3f.y,R127f.z) + PV0f.z)/2.0;
|
||||||
|
R126f.y = intBitsToFloat(0x427f0000) * R5f.z;
|
||||||
|
PS1f = R126f.y;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg1f = R0f.w;
|
||||||
|
R127f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), R0f.w);
|
||||||
|
R125f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.w);
|
||||||
|
R126f.z = floor(backupReg0f);
|
||||||
|
R126f.z *= 4.0;
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), backupReg1f);
|
||||||
|
PS0f = sqrt(PV1f.z);
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R127f.y;
|
||||||
|
backupReg1f = R126f.x;
|
||||||
|
backupReg2f = R127f.w;
|
||||||
|
R126f.x = floor(R126f.y);
|
||||||
|
R126f.x *= 4.0;
|
||||||
|
R127f.y = (mul_nonIEEE(R2f.x,PS0f) + backupReg0f);
|
||||||
|
R127f.z = (mul_nonIEEE(R2f.z,PS0f) + backupReg1f);
|
||||||
|
R127f.w = (mul_nonIEEE(R2f.y,PS0f) + backupReg2f);
|
||||||
|
R2f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.w);
|
||||||
|
PS1f = R2f.x;
|
||||||
|
// 6
|
||||||
|
R3f.x = mul_nonIEEE(R1f.x, R0f.x);
|
||||||
|
R2f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R125f.y);
|
||||||
|
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.x);
|
||||||
|
R5f.w = 1.0;
|
||||||
|
R3f.y = mul_nonIEEE(R1f.x, R0f.y);
|
||||||
|
PS0f = R3f.y;
|
||||||
|
// 7
|
||||||
|
R5f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R5f.y = intBitsToFloat(uf_remappedPS[2].z);
|
||||||
|
R3f.z = mul_nonIEEE(R1f.x, R0f.z);
|
||||||
|
R2f.w = 1.0;
|
||||||
|
R0f.x = R127f.y + 0.5;
|
||||||
|
PS1f = R0f.x;
|
||||||
|
// 8
|
||||||
|
R0f.y = R127f.w + 0.5;
|
||||||
|
R0f.z = R127f.z + 0.5;
|
||||||
|
R3f.w = (R126f.z * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
R0f.w = (R126f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
PS0f = R0f.w;
|
||||||
|
// 9
|
||||||
|
R9f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R9f.w = R2f.w;
|
||||||
|
// 10
|
||||||
|
R8f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R8f.w = R0f.w;
|
||||||
|
// 11
|
||||||
|
R7f.xyz = vec3(R3f.x,R3f.y,R3f.z);
|
||||||
|
R7f.w = R3f.w;
|
||||||
|
// 12
|
||||||
|
R6f.xyz = vec3(R5f.x,R5f.y,R5f.z);
|
||||||
|
R6f.w = R5f.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor1 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor3 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
passPixelColor5 = vec4(R9f.x, R9f.y, R9f.z, R9f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,213 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader b2e1c9ce2f160aab
|
||||||
|
// Shrine of Resurrection - lights
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb5e8b000 res 512x512x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb5ecd000 res 512x512x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb5eac000 res 512x512x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem6;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R10f = vec4(0.0);
|
||||||
|
vec4 R122f = 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 = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem6;
|
||||||
|
R6f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R5f.xyz = (texture(textureUnitPS5, R0f.xy).xyz);
|
||||||
|
R0f.xyzw = (texture(textureUnitPS3, R0f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
R126f.y = (R6f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.y = R126f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
R127f.x = (R6f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.x;
|
||||||
|
// 1
|
||||||
|
R126f.x = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.x);
|
||||||
|
R127f.y = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.z);
|
||||||
|
R127f.z = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.w);
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.y, PV0f.y);
|
||||||
|
R127f.w = mul_nonIEEE(R3f.w, PS0f);
|
||||||
|
PS1f = R127f.w;
|
||||||
|
// 2
|
||||||
|
tempf.x = dot(vec4(R4f.x,R4f.y,R4f.z,-0.0),vec4(R4f.x,R4f.y,R4f.z,0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
R122f.x = (mul_nonIEEE(R127f.x,R127f.x) + PV1f.w);
|
||||||
|
R122f.x = clamp(R122f.x, 0.0, 1.0);
|
||||||
|
PS0f = R122f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.x = mul_nonIEEE(R127f.y, R127f.w);
|
||||||
|
R127f.y = -(PS0f) + 1.0;
|
||||||
|
PV1f.z = mul_nonIEEE(R126f.x, R127f.w);
|
||||||
|
PV1f.w = mul_nonIEEE(R127f.z, R127f.w);
|
||||||
|
PS1f = sqrt(PV0f.x);
|
||||||
|
// 4
|
||||||
|
R126f.x = (mul_nonIEEE(R3f.z,R126f.y) + PV1f.w);
|
||||||
|
R125f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R5f.x);
|
||||||
|
R127f.z = (mul_nonIEEE(R3f.y,R126f.y) + PV1f.x);
|
||||||
|
R127f.w = (mul_nonIEEE(R3f.x,R126f.y) + PV1f.z);
|
||||||
|
PS0f = 1.0 / PS1f;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R127f.y;
|
||||||
|
R127f.x = mul_nonIEEE(R4f.x, PS0f);
|
||||||
|
R127f.y = mul_nonIEEE(R4f.y, PS0f);
|
||||||
|
R126f.z = mul_nonIEEE(R4f.z, PS0f);
|
||||||
|
R126f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R5f.y);
|
||||||
|
PS1f = sqrt(backupReg0f);
|
||||||
|
// 6
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
R126f.x = (mul_nonIEEE(R2f.x,PS1f) + R127f.w);
|
||||||
|
PV0f.x = R126f.x;
|
||||||
|
R126f.y = (mul_nonIEEE(R2f.y,PS1f) + R127f.z);
|
||||||
|
PV0f.y = R126f.y;
|
||||||
|
R127f.z = (mul_nonIEEE(R2f.z,PS1f) + backupReg0f);
|
||||||
|
PV0f.z = R127f.z;
|
||||||
|
R127f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), R5f.z);
|
||||||
|
R2f.y = mul_nonIEEE(R1f.x, R0f.y);
|
||||||
|
PS0f = R2f.y;
|
||||||
|
// 7
|
||||||
|
tempf.x = dot(vec4(R127f.x,R127f.y,R126f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
PS1f = R6f.z * intBitsToFloat(0x427f0000);
|
||||||
|
// 8
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV0f.x = PV1f.x + 1.0;
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
R127f.y = floor(PS1f);
|
||||||
|
R127f.y *= 4.0;
|
||||||
|
R2f.z = mul_nonIEEE(R1f.x, R0f.z);
|
||||||
|
R6f.w = R0f.w;
|
||||||
|
R2f.x = mul_nonIEEE(R1f.x, backupReg0f);
|
||||||
|
PS0f = R2f.x;
|
||||||
|
// 9
|
||||||
|
R6f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R6f.y = intBitsToFloat(uf_remappedPS[1].z);
|
||||||
|
PV1f.z = -(PV0f.x) + 1.0;
|
||||||
|
R0f.w = 1.0;
|
||||||
|
R1f.x = (R126f.x * 0.5 + 0.5);
|
||||||
|
PS1f = R1f.x;
|
||||||
|
// 10
|
||||||
|
R1f.y = (R126f.y * 0.5 + 0.5);
|
||||||
|
R1f.z = (R127f.z * 0.5 + 0.5);
|
||||||
|
R2f.w = intBitsToFloat(0x3b808081);
|
||||||
|
tempResultf = log2(PV1f.z);
|
||||||
|
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
|
||||||
|
PS0f = tempResultf;
|
||||||
|
// 11
|
||||||
|
PV1f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z), PS0f);
|
||||||
|
R1f.w = (R127f.y * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
// 12
|
||||||
|
PS0f = exp2(PV1f.y);
|
||||||
|
PS0f = clamp(PS0f, 0.0, 1.0);
|
||||||
|
// 13
|
||||||
|
PV1f.z = intBitsToFloat(uf_remappedPS[2].w) + PS0f;
|
||||||
|
PV1f.z = clamp(PV1f.z, 0.0, 1.0);
|
||||||
|
// 14
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.z, R127f.w);
|
||||||
|
PV0f.z = mul_nonIEEE(PV1f.z, R125f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.z, R126f.w);
|
||||||
|
// 15
|
||||||
|
R0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x), PV0f.z);
|
||||||
|
PV1f.x = R0f.x;
|
||||||
|
R0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x), PV0f.w);
|
||||||
|
PV1f.y = R0f.y;
|
||||||
|
R0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x), PV0f.x);
|
||||||
|
PV1f.z = R0f.z;
|
||||||
|
// 16
|
||||||
|
R10f.xyz = vec3(PV1f.x,PV1f.y,PV1f.z);
|
||||||
|
R10f.w = R0f.w;
|
||||||
|
// 17
|
||||||
|
R9f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R9f.w = R1f.w;
|
||||||
|
// 18
|
||||||
|
R8f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R8f.w = R2f.w;
|
||||||
|
// 19
|
||||||
|
R7f.xyz = vec3(R6f.x,R6f.y,R6f.z);
|
||||||
|
R7f.w = R6f.w;
|
||||||
|
// export
|
||||||
|
if( ((vec4(R7f.x, R7f.y, R7f.z, R7f.w)).a >= uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor1 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
passPixelColor3 = vec4(R9f.x, R9f.y, R9f.z, R9f.w);
|
||||||
|
passPixelColor5 = vec4(R10f.x, R10f.y, R10f.z, R10f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,184 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader b5b53042daaad65c
|
||||||
|
// Shrine - elements
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb751f000 res 256x40x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb7525000 res 128x20x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb7522000 res 256x40x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xb750e000 res 424x256x1 dim 1 tm: 4 format 0034 compSel: 0 4 4 4 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem3;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem5;
|
||||||
|
layout(location = 4) in vec4 passParameterSem7;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R10f = 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 = passParameterSem3;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem5;
|
||||||
|
R4f = passParameterSem7;
|
||||||
|
R5f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R4f.x = (texture(textureUnitPS7, R4f.xy).x);
|
||||||
|
R0f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R6f.xyzw = (texture(textureUnitPS3, R0f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
R127f.x = (R5f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R127f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R1f.y, R2f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R1f.x, R2f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(R1f.z, R2f.x);
|
||||||
|
R127f.y = (R5f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(-(R2f.z),R1f.x) + PV0f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(-(R2f.x),R1f.y) + PV0f.z);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
R123f.z = (mul_nonIEEE(-(R2f.y),R1f.z) + PV0f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
PS1f = mul_nonIEEE(R2f.w, PS0f);
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.z, PS1f);
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.x, PS1f);
|
||||||
|
R123f.z = (mul_nonIEEE(R127f.y,R127f.y) + PV1f.w);
|
||||||
|
R123f.z = clamp(R123f.z, 0.0, 1.0);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.y, PS1f);
|
||||||
|
R127f.y = R5f.z * intBitsToFloat(0x427f0000);
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = -(PV0f.z) + 1.0;
|
||||||
|
R125f.y = (mul_nonIEEE(R2f.z,backupReg0f) + PV0f.w)/2.0;
|
||||||
|
R126f.z = (mul_nonIEEE(R2f.y,backupReg0f) + PV0f.y)/2.0;
|
||||||
|
R127f.w = (mul_nonIEEE(R2f.x,backupReg0f) + PV0f.x)/2.0;
|
||||||
|
R126f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R0f.w);
|
||||||
|
PS1f = R126f.y;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R127f.y;
|
||||||
|
backupReg1f = R0f.w;
|
||||||
|
PV0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.w);
|
||||||
|
R127f.y = floor(backupReg0f);
|
||||||
|
R127f.y *= 4.0;
|
||||||
|
R127f.z = mul_nonIEEE(R3f.x, R4f.x);
|
||||||
|
PV0f.z = R127f.z;
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), backupReg1f);
|
||||||
|
R4f.w = R6f.w;
|
||||||
|
PS0f = R4f.w;
|
||||||
|
// 5
|
||||||
|
R0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R126f.y);
|
||||||
|
R0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.x);
|
||||||
|
R0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.w);
|
||||||
|
R0f.w = 1.0;
|
||||||
|
R3f.x = mul_nonIEEE(R6f.x, PV0f.z);
|
||||||
|
PS1f = R3f.x;
|
||||||
|
// 6
|
||||||
|
R4f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R3f.y = mul_nonIEEE(R6f.y, R127f.z);
|
||||||
|
R3f.z = mul_nonIEEE(R6f.z, R127f.z);
|
||||||
|
R3f.w = intBitsToFloat(0x3b808081);
|
||||||
|
R4f.y = intBitsToFloat(uf_remappedPS[2].z);
|
||||||
|
PS0f = R4f.y;
|
||||||
|
// 7
|
||||||
|
R6f.w = (R127f.y * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
PS1f = sqrt(R127f.x);
|
||||||
|
PS1f /= 2.0;
|
||||||
|
// 8
|
||||||
|
R123f.y = (mul_nonIEEE(R1f.x,PS1f) + R127f.w);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
R123f.z = (mul_nonIEEE(R1f.z,PS1f) + R125f.y);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R1f.y,PS1f) + R126f.z);
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
// 9
|
||||||
|
R6f.xyz = vec3(PV0f.y,PV0f.w,PV0f.z) + vec3(0.5,0.5,0.5);
|
||||||
|
// 10
|
||||||
|
R10f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R10f.w = R0f.w;
|
||||||
|
// 11
|
||||||
|
R9f.xyz = vec3(R6f.x,R6f.y,R6f.z);
|
||||||
|
R9f.w = R6f.w;
|
||||||
|
// 12
|
||||||
|
R8f.xyz = vec3(R3f.x,R3f.y,R3f.z);
|
||||||
|
R8f.w = R3f.w;
|
||||||
|
// 13
|
||||||
|
R7f.xyz = vec3(R4f.x,R4f.y,R4f.z);
|
||||||
|
R7f.w = R4f.w;
|
||||||
|
// export
|
||||||
|
if( ((vec4(R7f.x, R7f.y, R7f.z, R7f.w)).a >= uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor1 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
passPixelColor3 = vec4(R9f.x, R9f.y, R9f.z, R9f.w);
|
||||||
|
passPixelColor5 = vec4(R10f.x, R10f.y, R10f.z, R10f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,171 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader bc9529a682410603
|
||||||
|
// Divine Beasts + Stones near Castle
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb428c000 res 512x512x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb42ce000 res 256x256x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb42ad000 res 512x512x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec4 R0f = vec4(0.0);
|
||||||
|
vec4 R1f = vec4(0.0);
|
||||||
|
vec4 R2f = vec4(0.0);
|
||||||
|
vec4 R3f = vec4(0.0);
|
||||||
|
vec4 R4f = vec4(0.0);
|
||||||
|
vec4 R5f = vec4(0.0);
|
||||||
|
vec4 R6f = vec4(0.0);
|
||||||
|
vec4 R7f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 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 = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R0f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R0f.xyz = (texture(textureUnitPS3, R0f.xy).xyz);
|
||||||
|
// 0
|
||||||
|
R127f.x = (R4f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R127f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
R127f.w = (R4f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.y);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R123f.w = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = mul_nonIEEE(R3f.w, PS0f);
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.y, PS1f);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.w,R127f.w) + PV1f.z);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(PV1f.x, PS1f);
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.w, PS1f);
|
||||||
|
R127f.y = R4f.z * intBitsToFloat(0x427f0000);
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = -(PV0f.y) + 1.0;
|
||||||
|
R126f.y = (mul_nonIEEE(R3f.y,backupReg0f) + PV0f.z)/2.0;
|
||||||
|
R126f.z = (mul_nonIEEE(R3f.x,backupReg0f) + PV0f.x)/2.0;
|
||||||
|
R127f.w = (mul_nonIEEE(R3f.z,backupReg0f) + PV0f.w)/2.0;
|
||||||
|
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R0f.w);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
R126f.x = floor(R127f.y);
|
||||||
|
R126f.x *= 4.0;
|
||||||
|
PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), R0f.w);
|
||||||
|
R3f.z = mul_nonIEEE(R1f.x, R0f.z);
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg0f);
|
||||||
|
R3f.x = mul_nonIEEE(R1f.x, R0f.x);
|
||||||
|
PS0f = R3f.x;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
R0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.z);
|
||||||
|
R0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.w);
|
||||||
|
R0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.y);
|
||||||
|
R1f.w = 1.0;
|
||||||
|
R3f.y = mul_nonIEEE(R1f.x, backupReg0f);
|
||||||
|
PS1f = R3f.y;
|
||||||
|
// 6
|
||||||
|
R1f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R1f.y = 0.0;
|
||||||
|
R0f.w = 1.0;
|
||||||
|
PS0f = sqrt(R127f.x);
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 7
|
||||||
|
R123f.x = (mul_nonIEEE(R2f.z,PS0f) + R127f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.z = (mul_nonIEEE(R2f.y,PS0f) + R126f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R2f.x,PS0f) + R126f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
R3f.w = intBitsToFloat(0x3b808081);
|
||||||
|
PS1f = R3f.w;
|
||||||
|
// 8
|
||||||
|
R2f.xyz = vec3(PV1f.w,PV1f.z,PV1f.x) + vec3(0.5,0.5,0.5);
|
||||||
|
R2f.w = (R126f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
// 9
|
||||||
|
R7f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R7f.w = R0f.w;
|
||||||
|
// 10
|
||||||
|
R6f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R6f.w = R2f.w;
|
||||||
|
// 11
|
||||||
|
R5f.xyz = vec3(R3f.x,R3f.y,R3f.z);
|
||||||
|
R5f.w = R3f.w;
|
||||||
|
// 12
|
||||||
|
R4f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R4f.w = R1f.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||||
|
passPixelColor1 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||||
|
passPixelColor3 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor5 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,92 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader beb15cab79e5ca5d
|
||||||
|
// Shrine - ending Sheikah logo + Hateno fire flare
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x21627000 res 91x202x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 1 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem8;
|
||||||
|
R3f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
R127f.x = mul_nonIEEE(R3f.z, R3f.z);
|
||||||
|
PV0f.y = -(R0f.w) + R3f.w;
|
||||||
|
R127f.z = mul_nonIEEE(R3f.y, R3f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(R3f.x, R3f.x);
|
||||||
|
PS0f = backupReg0f + -(R1f.x);
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.z;
|
||||||
|
PV1f.x = mul_nonIEEE(R1f.w, PV0f.y);
|
||||||
|
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
|
||||||
|
PV1f.z = backupReg0f + -(R1f.z);
|
||||||
|
PV1f.w = R0f.y + -(R1f.y);
|
||||||
|
R0f.x = (mul_nonIEEE(PS0f,PV0f.w) + R1f.x);
|
||||||
|
PS1f = R0f.x;
|
||||||
|
// 2
|
||||||
|
R0f.y = (mul_nonIEEE(PV1f.w,R127f.z) + R1f.y);
|
||||||
|
R0f.z = (mul_nonIEEE(PV1f.z,R127f.x) + R1f.z);
|
||||||
|
R0f.w = mul_nonIEEE(R2f.x, PV1f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,179 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader bee298edc2f7e315
|
||||||
|
// Sheikah Tower - control panel
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[4];
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb370e000 res 128x128x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb3753000 res 128x128x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb3712000 res 512x512x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = 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 = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R5f.xw = (texture(textureUnitPS5, R0f.xy).xw);
|
||||||
|
R0f.xyz = (texture(textureUnitPS3, R0f.xy).xyz);
|
||||||
|
// 0
|
||||||
|
R127f.x = (R4f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R127f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
R127f.w = (R4f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.y);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.w);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R123f.w = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = mul_nonIEEE(R3f.w, PS0f);
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.w, PS1f);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.w,R127f.w) + PV1f.z);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(PV1f.x, PS1f);
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.y, PS1f);
|
||||||
|
R126f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R5f.w);
|
||||||
|
PS0f = R126f.w;
|
||||||
|
// 3
|
||||||
|
PV1f.x = -(PV0f.y) + 1.0;
|
||||||
|
R127f.y = (mul_nonIEEE(R3f.y,R127f.x) + PV0f.z)/2.0;
|
||||||
|
R127f.z = (mul_nonIEEE(R3f.x,R127f.x) + PV0f.x)/2.0;
|
||||||
|
R127f.w = (mul_nonIEEE(R3f.z,R127f.x) + PV0f.w)/2.0;
|
||||||
|
R126f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R5f.w);
|
||||||
|
PS1f = R126f.y;
|
||||||
|
// 4
|
||||||
|
R127f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), R5f.w);
|
||||||
|
R125f.y = R4f.z * intBitsToFloat(0x427f0000);
|
||||||
|
R126f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R5f.x);
|
||||||
|
R125f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y), R5f.x);
|
||||||
|
PS0f = sqrt(PV1f.x);
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R127f.y;
|
||||||
|
backupReg1f = R127f.z;
|
||||||
|
R126f.x = (mul_nonIEEE(R2f.z,PS0f) + R127f.w);
|
||||||
|
R127f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z), R5f.x);
|
||||||
|
R127f.z = (mul_nonIEEE(R2f.y,PS0f) + backupReg0f);
|
||||||
|
R127f.w = (mul_nonIEEE(R2f.x,PS0f) + backupReg1f);
|
||||||
|
PS1f = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y), R126f.w);
|
||||||
|
// 6
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = floor(R125f.y);
|
||||||
|
R127f.x *= 4.0;
|
||||||
|
PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y), backupReg0f);
|
||||||
|
R5f.z = mul_nonIEEE(R1f.x, R0f.z);
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y), R126f.y);
|
||||||
|
R2f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R126f.z) + PS1f);
|
||||||
|
PS0f = R2f.x;
|
||||||
|
// 7
|
||||||
|
R5f.x = mul_nonIEEE(R1f.x, R0f.x);
|
||||||
|
R2f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R125f.w) + PV0f.w);
|
||||||
|
R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R127f.y) + PV0f.y);
|
||||||
|
R1f.w = 1.0;
|
||||||
|
R5f.y = mul_nonIEEE(R1f.x, R0f.y);
|
||||||
|
PS1f = R5f.y;
|
||||||
|
// 8
|
||||||
|
R1f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R1f.y = intBitsToFloat(uf_remappedPS[3].z);
|
||||||
|
R0f.z = R126f.x + 0.5;
|
||||||
|
R2f.w = 1.0;
|
||||||
|
R0f.x = R127f.w + 0.5;
|
||||||
|
PS0f = R0f.x;
|
||||||
|
// 9
|
||||||
|
R0f.y = R127f.z + 0.5;
|
||||||
|
R5f.w = intBitsToFloat(0x3b808081);
|
||||||
|
R0f.w = (R127f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
PS1f = R0f.w;
|
||||||
|
// 10
|
||||||
|
R9f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R9f.w = R2f.w;
|
||||||
|
// 11
|
||||||
|
R8f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R8f.w = R0f.w;
|
||||||
|
// 12
|
||||||
|
R7f.xyz = vec3(R5f.x,R5f.y,R5f.z);
|
||||||
|
R7f.w = R5f.w;
|
||||||
|
// 13
|
||||||
|
R6f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R6f.w = R1f.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor1 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor3 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
passPixelColor5 = vec4(R9f.x, R9f.y, R9f.z, R9f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,103 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader c36b10f0e410def8
|
||||||
|
// Guardian scout fire 2
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x214a1000 res 400x400x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 1 1 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x20fd4000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem8;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
|
||||||
|
R3f.xyz = (texture(textureUnitPS1, R3f.zw).xyz);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R4f.x, R4f.x);
|
||||||
|
R127f.y = mul_nonIEEE(R4f.z, R4f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.x, R3f.x);
|
||||||
|
PV0f.w = mul_nonIEEE(R4f.y, R4f.y);
|
||||||
|
PS0f = mul_nonIEEE(R3f.y, R3f.y);
|
||||||
|
// 1
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV1f.x = mul_nonIEEE(R3f.z, R3f.z);
|
||||||
|
PV1f.y = R4f.w * 1.0;
|
||||||
|
R127f.z = mul_nonIEEE(PV0f.w, PS0f);
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.x, PV0f.z);
|
||||||
|
PS1f = backupReg0f + -(R1f.x);
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
backupReg1f = R0f.z;
|
||||||
|
PV0f.x = mul_nonIEEE(R0f.w, PV1f.y);
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
PV0f.y = mul_nonIEEE(R127f.y, PV1f.x);
|
||||||
|
PV0f.z = backupReg0f + -(R1f.y);
|
||||||
|
PV0f.w = backupReg1f + -(R1f.z);
|
||||||
|
R0f.x = (mul_nonIEEE(PS1f,PV1f.w) + R1f.x);
|
||||||
|
PS0f = R0f.x;
|
||||||
|
// 3
|
||||||
|
R0f.y = (mul_nonIEEE(PV0f.z,R127f.z) + R1f.y);
|
||||||
|
R0f.z = (mul_nonIEEE(PV0f.w,PV0f.y) + R1f.z);
|
||||||
|
R0f.w = mul_nonIEEE(R2f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,182 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader cb27783c5e10df0e
|
||||||
|
// Shrine - elevator field 2
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[1];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fd4000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem5;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 5) in vec4 passParameterSem11;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R125f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem5;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R5f = passParameterSem11;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R4f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
tempf.x = dot(vec4(intBitsToFloat(uf_remappedPS[0].x),intBitsToFloat(uf_remappedPS[0].y),intBitsToFloat(uf_remappedPS[0].z),-0.0),vec4(intBitsToFloat(uf_remappedPS[0].x),intBitsToFloat(uf_remappedPS[0].y),intBitsToFloat(uf_remappedPS[0].z),0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
R127f.w = -(R2f.y) + R3f.y;
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
tempf.x = dot(vec4(R5f.x,R5f.y,R5f.z,-0.0),vec4(R5f.x,R5f.y,R5f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
tempResultf = 1.0 / sqrt(PV0f.x);
|
||||||
|
PS1f = tempResultf;
|
||||||
|
// 2
|
||||||
|
R127f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), PS1f);
|
||||||
|
PV0f.x = R127f.x;
|
||||||
|
R127f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), PS1f);
|
||||||
|
PV0f.y = R127f.y;
|
||||||
|
R126f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), PS1f);
|
||||||
|
PV0f.z = R126f.z;
|
||||||
|
R126f.w = -(R3f.y) + R3f.z;
|
||||||
|
tempResultf = 1.0 / sqrt(PV1f.x);
|
||||||
|
R127f.z = tempResultf;
|
||||||
|
PS0f = R127f.z;
|
||||||
|
// 3
|
||||||
|
tempf.x = dot(vec4(PV0f.x,PV0f.y,PV0f.z,-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
|
||||||
|
PV1f.x = tempf.x;
|
||||||
|
PV1f.y = tempf.x;
|
||||||
|
PV1f.z = tempf.x;
|
||||||
|
PV1f.w = tempf.x;
|
||||||
|
R126f.y = mul_nonIEEE(R5f.y, PS0f);
|
||||||
|
PS1f = R126f.y;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R127f.z;
|
||||||
|
R126f.x = mul_nonIEEE(R5f.x, R127f.z);
|
||||||
|
R125f.y = mul_nonIEEE(R4f.x, R4f.x);
|
||||||
|
R127f.z = mul_nonIEEE(R5f.z, backupReg0f);
|
||||||
|
R125f.w = mul_nonIEEE(R4f.y, R4f.y);
|
||||||
|
tempResultf = 1.0 / sqrt(PV1f.x);
|
||||||
|
PS0f = tempResultf;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R127f.w;
|
||||||
|
PV1f.x = mul_nonIEEE(R127f.x, PS0f);
|
||||||
|
PV1f.y = mul_nonIEEE(R127f.y, PS0f);
|
||||||
|
PV1f.z = mul_nonIEEE(R126f.z, PS0f);
|
||||||
|
R127f.w = mul_nonIEEE(R4f.z, R4f.z);
|
||||||
|
R126f.z = 1.0 / backupReg0f;
|
||||||
|
PS1f = R126f.z;
|
||||||
|
// 6
|
||||||
|
backupReg0f = R126f.w;
|
||||||
|
tempf.x = dot(vec4(R126f.x,R126f.y,R127f.z,-0.0),vec4(PV1f.x,PV1f.y,PV1f.z,0.0));
|
||||||
|
PV0f.x = tempf.x;
|
||||||
|
PV0f.y = tempf.x;
|
||||||
|
PV0f.z = tempf.x;
|
||||||
|
PV0f.w = tempf.x;
|
||||||
|
R126f.w = 1.0 / backupReg0f;
|
||||||
|
PS0f = R126f.w;
|
||||||
|
// 7
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
backupReg1f = R0f.y;
|
||||||
|
PV1f.x = backupReg0f + -(R1f.x);
|
||||||
|
PV1f.y = max(PV0f.x, -(PV0f.x));
|
||||||
|
R127f.z = backupReg1f + -(R1f.y);
|
||||||
|
PV1f.w = R0f.z + -(R1f.z);
|
||||||
|
// 8
|
||||||
|
PV0f.x = -(R2f.y) + PV1f.y;
|
||||||
|
PV0f.y = -(R3f.y) + PV1f.y;
|
||||||
|
R3f.z = (mul_nonIEEE(PV1f.w,R127f.w) + R1f.z);
|
||||||
|
R3f.x = (mul_nonIEEE(PV1f.x,R125f.y) + R1f.x);
|
||||||
|
PS0f = R3f.x;
|
||||||
|
// 9
|
||||||
|
PV1f.y = PV0f.x * R126f.z;
|
||||||
|
PV1f.y = clamp(PV1f.y, 0.0, 1.0);
|
||||||
|
PV1f.z = PV0f.y * R126f.w;
|
||||||
|
PV1f.z = clamp(PV1f.z, 0.0, 1.0);
|
||||||
|
R3f.y = (mul_nonIEEE(R127f.z,R125f.w) + R1f.y);
|
||||||
|
PS1f = R3f.y;
|
||||||
|
// 10
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.y, PV1f.y);
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.z, PV1f.z);
|
||||||
|
R123f.z = (intBitsToFloat(0xc0000000) * PV1f.z + intBitsToFloat(0x40400000));
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
R123f.w = (intBitsToFloat(0xc0000000) * PV1f.y + intBitsToFloat(0x40400000));
|
||||||
|
PV0f.w = R123f.w;
|
||||||
|
// 11
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, PV0f.w);
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.y, PV0f.z);
|
||||||
|
// 12
|
||||||
|
PV0f.z = mul_nonIEEE(PV1f.z, PV1f.w);
|
||||||
|
// 13
|
||||||
|
PV1f.y = mul_nonIEEE(R0f.w, PV0f.z);
|
||||||
|
// 14
|
||||||
|
PV0f.x = mul_nonIEEE(R4f.w, PV1f.y);
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
// 15
|
||||||
|
R3f.w = mul_nonIEEE(R2f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R3f.x, R3f.y, R3f.z, R3f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,171 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader cc9529ae1a492d03
|
||||||
|
// Shrine - chests
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0x347e9000 res 128x128x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0x347f7000 res 512x512x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0x347eb000 res 512x512x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec4 R0f = vec4(0.0);
|
||||||
|
vec4 R1f = vec4(0.0);
|
||||||
|
vec4 R2f = vec4(0.0);
|
||||||
|
vec4 R3f = vec4(0.0);
|
||||||
|
vec4 R4f = vec4(0.0);
|
||||||
|
vec4 R5f = vec4(0.0);
|
||||||
|
vec4 R6f = vec4(0.0);
|
||||||
|
vec4 R7f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 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 = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R0f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R0f.xyz = (texture(textureUnitPS3, R0f.xy).xyz);
|
||||||
|
// 0
|
||||||
|
R127f.x = (R4f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R127f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
R127f.w = (R4f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.y);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R123f.w = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = mul_nonIEEE(R3f.w, PS0f);
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.y, PS1f);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.w,R127f.w) + PV1f.z);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(PV1f.x, PS1f);
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.w, PS1f);
|
||||||
|
R127f.y = R4f.z * intBitsToFloat(0x427f0000);
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = -(PV0f.y) + 1.0;
|
||||||
|
R126f.y = (mul_nonIEEE(R3f.y,backupReg0f) + PV0f.z)/2.0;
|
||||||
|
R126f.z = (mul_nonIEEE(R3f.x,backupReg0f) + PV0f.x)/2.0;
|
||||||
|
R127f.w = (mul_nonIEEE(R3f.z,backupReg0f) + PV0f.w)/2.0;
|
||||||
|
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R0f.w);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
R126f.x = floor(R127f.y);
|
||||||
|
R126f.x *= 4.0;
|
||||||
|
PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), R0f.w);
|
||||||
|
R3f.z = mul_nonIEEE(R1f.x, R0f.z);
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg0f);
|
||||||
|
R3f.x = mul_nonIEEE(R1f.x, R0f.x);
|
||||||
|
PS0f = R3f.x;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
R0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.z);
|
||||||
|
R0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.w);
|
||||||
|
R0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.y);
|
||||||
|
R1f.w = 1.0;
|
||||||
|
R3f.y = mul_nonIEEE(R1f.x, backupReg0f);
|
||||||
|
PS1f = R3f.y;
|
||||||
|
// 6
|
||||||
|
R1f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R1f.y = intBitsToFloat(uf_remappedPS[2].z);
|
||||||
|
R0f.w = 1.0;
|
||||||
|
PS0f = sqrt(R127f.x);
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 7
|
||||||
|
R123f.x = (mul_nonIEEE(R2f.z,PS0f) + R127f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.z = (mul_nonIEEE(R2f.y,PS0f) + R126f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R2f.x,PS0f) + R126f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
R3f.w = intBitsToFloat(0x3b808081);
|
||||||
|
PS1f = R3f.w;
|
||||||
|
// 8
|
||||||
|
R2f.xyz = vec3(PV1f.w,PV1f.z,PV1f.x) + vec3(0.5,0.5,0.5);
|
||||||
|
R2f.w = (R126f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
// 9
|
||||||
|
R7f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R7f.w = R0f.w;
|
||||||
|
// 10
|
||||||
|
R6f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R6f.w = R2f.w;
|
||||||
|
// 11
|
||||||
|
R5f.xyz = vec3(R3f.x,R3f.y,R3f.z);
|
||||||
|
R5f.w = R3f.w;
|
||||||
|
// 12
|
||||||
|
R4f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R4f.w = R1f.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||||
|
passPixelColor1 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||||
|
passPixelColor3 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor5 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,176 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader cd1eba6802df67f7
|
||||||
|
// Shrine - ceiling
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb7c6c000 res 512x512x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb7cae000 res 512x512x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb7c8d000 res 512x512x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xb7ab8000 res 1936x1024x1 dim 1 tm: 4 format 0034 compSel: 0 4 4 4 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem3;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem5;
|
||||||
|
layout(location = 4) in vec4 passParameterSem7;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R10f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem3;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem5;
|
||||||
|
R4f = passParameterSem7;
|
||||||
|
R5f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R4f.x = (texture(textureUnitPS7, R4f.xy).x);
|
||||||
|
R6f.xyz = (texture(textureUnitPS3, R0f.xy).xyz);
|
||||||
|
R0f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
// 0
|
||||||
|
R127f.x = (R5f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R127f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R1f.z, R2f.x);
|
||||||
|
PV0f.z = mul_nonIEEE(R1f.y, R2f.z);
|
||||||
|
PV0f.w = mul_nonIEEE(R1f.x, R2f.y);
|
||||||
|
R127f.y = (R5f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(-(R2f.y),R1f.z) + PV0f.z);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(-(R2f.x),R1f.y) + PV0f.w);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
R123f.z = (mul_nonIEEE(-(R2f.z),R1f.x) + PV0f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
PS1f = mul_nonIEEE(R2f.w, PS0f);
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.x, PS1f);
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.z, PS1f);
|
||||||
|
R123f.z = (mul_nonIEEE(R127f.y,R127f.y) + PV1f.w);
|
||||||
|
R123f.z = clamp(R123f.z, 0.0, 1.0);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.y, PS1f);
|
||||||
|
PS0f = R5f.z * intBitsToFloat(0x427f0000);
|
||||||
|
// 3
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = -(PV0f.z) + 1.0;
|
||||||
|
R127f.y = (mul_nonIEEE(R2f.z,backupReg0f) + PV0f.w)/2.0;
|
||||||
|
R127f.z = (mul_nonIEEE(R2f.y,backupReg0f) + PV0f.y)/2.0;
|
||||||
|
R127f.w = (mul_nonIEEE(R2f.x,backupReg0f) + PV0f.x)/2.0;
|
||||||
|
R126f.x = floor(PS0f);
|
||||||
|
R126f.x *= 4.0;
|
||||||
|
PS1f = R126f.x;
|
||||||
|
// 4
|
||||||
|
R0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R0f.w);
|
||||||
|
R0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.w);
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.x, R4f.x);
|
||||||
|
R3f.w = 1.0;
|
||||||
|
R0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), R0f.w);
|
||||||
|
PS0f = R0f.z;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R6f.x;
|
||||||
|
backupReg1f = R6f.y;
|
||||||
|
backupReg2f = R6f.z;
|
||||||
|
R6f.x = mul_nonIEEE(backupReg0f, PV0f.z);
|
||||||
|
R6f.y = mul_nonIEEE(backupReg1f, PV0f.z);
|
||||||
|
R6f.z = mul_nonIEEE(backupReg2f, PV0f.z);
|
||||||
|
R0f.w = 1.0;
|
||||||
|
R3f.x = intBitsToFloat(0x3c808081);
|
||||||
|
PS1f = R3f.x;
|
||||||
|
// 6
|
||||||
|
R3f.y = intBitsToFloat(uf_remappedPS[1].z);
|
||||||
|
R6f.w = intBitsToFloat(0x3b808081);
|
||||||
|
PS0f = sqrt(R127f.x);
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 7
|
||||||
|
R123f.y = (mul_nonIEEE(R1f.x,PS0f) + R127f.w);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
R123f.z = (mul_nonIEEE(R1f.z,PS0f) + R127f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R1f.y,PS0f) + R127f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
R1f.w = (R126f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
PS1f = R1f.w;
|
||||||
|
// 8
|
||||||
|
R1f.xyz = vec3(PV1f.y,PV1f.w,PV1f.z) + vec3(0.5,0.5,0.5);
|
||||||
|
// 9
|
||||||
|
R10f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R10f.w = R0f.w;
|
||||||
|
// 10
|
||||||
|
R9f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R9f.w = R1f.w;
|
||||||
|
// 11
|
||||||
|
R8f.xyz = vec3(R6f.x,R6f.y,R6f.z);
|
||||||
|
R8f.w = R6f.w;
|
||||||
|
// 12
|
||||||
|
R7f.xyz = vec3(R3f.x,R3f.y,R3f.z);
|
||||||
|
R7f.w = R3f.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor1 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
passPixelColor3 = vec4(R9f.x, R9f.y, R9f.z, R9f.w);
|
||||||
|
passPixelColor5 = vec4(R10f.x, R10f.y, R10f.z, R10f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,189 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader ce76f7a67517c0b2
|
||||||
|
// Shrine - top part
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0x34839800 res 32x32x1 dim 1 tm: 2 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0x6) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0x3483b000 res 16x16x1 dim 1 tm: 2 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0x5) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0x3483a000 res 16x16x1 dim 1 tm: 2 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x5) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem6;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R10f = vec4(0.0);
|
||||||
|
vec4 R122f = 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 = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem6;
|
||||||
|
R5f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R0f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R6f.xyzw = (texture(textureUnitPS3, R0f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
R126f.x = (R5f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R126f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
R127f.w = (R5f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R127f.x = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.w);
|
||||||
|
R127f.y = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.z);
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R126f.w = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.y);
|
||||||
|
R122f.x = (mul_nonIEEE(-(R4f.z),intBitsToFloat(uf_remappedPS[0].x)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R122f.x = clamp(R122f.x, 0.0, 1.0);
|
||||||
|
PS1f = R122f.x;
|
||||||
|
// 2
|
||||||
|
R125f.x = R5f.z * intBitsToFloat(0x427f0000);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.w,R127f.w) + PV1f.z);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.w, R127f.w);
|
||||||
|
R127f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),PS1f) + 1.0);
|
||||||
|
PV0f.w = R127f.w;
|
||||||
|
R5f.x = mul_nonIEEE(R1f.x, R6f.x);
|
||||||
|
PS0f = R5f.x;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = -(PV0f.y) + 1.0;
|
||||||
|
PV1f.y = mul_nonIEEE(backupReg0f, PV0f.z);
|
||||||
|
PV1f.z = mul_nonIEEE(R126f.w, PV0f.z);
|
||||||
|
PV1f.w = mul_nonIEEE(R127f.y, PV0f.z);
|
||||||
|
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.w);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
R126f.x = (mul_nonIEEE(R3f.z,backupReg0f) + PV1f.w)/2.0;
|
||||||
|
R127f.y = (mul_nonIEEE(R3f.y,backupReg0f) + PV1f.z)/2.0;
|
||||||
|
R126f.z = (mul_nonIEEE(R3f.x,backupReg0f) + PV1f.y)/2.0;
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y), R127f.w);
|
||||||
|
PS0f = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z), R127f.w);
|
||||||
|
// 5
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
backupReg1f = R127f.x;
|
||||||
|
R127f.x = floor(R125f.x);
|
||||||
|
R127f.x *= 4.0;
|
||||||
|
R126f.y = mul_nonIEEE(R0f.w, PS0f);
|
||||||
|
PV1f.z = mul_nonIEEE(R0f.w, R127f.z);
|
||||||
|
PV1f.w = mul_nonIEEE(backupReg0f, PV0f.w);
|
||||||
|
PS1f = sqrt(backupReg1f);
|
||||||
|
PS1f /= 2.0;
|
||||||
|
// 6
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg1f = R2f.y;
|
||||||
|
backupReg2f = R126f.z;
|
||||||
|
R126f.x = (mul_nonIEEE(R2f.z,PS1f) + backupReg0f);
|
||||||
|
R2f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w), PV1f.w);
|
||||||
|
R126f.z = (mul_nonIEEE(backupReg1f,PS1f) + R127f.y);
|
||||||
|
R127f.w = (mul_nonIEEE(R2f.x,PS1f) + backupReg2f);
|
||||||
|
R2f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w), PV1f.z);
|
||||||
|
PS0f = R2f.x;
|
||||||
|
// 7
|
||||||
|
R6f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R5f.y = mul_nonIEEE(R1f.x, R6f.y);
|
||||||
|
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w), R126f.y);
|
||||||
|
R5f.z = mul_nonIEEE(R1f.x, R6f.z);
|
||||||
|
PS1f = R5f.z;
|
||||||
|
// 8
|
||||||
|
R1f.x = R127f.w + 0.5;
|
||||||
|
R6f.y = 0.0;
|
||||||
|
R1f.z = R126f.x + 0.5;
|
||||||
|
R2f.w = 1.0;
|
||||||
|
R1f.y = R126f.z + 0.5;
|
||||||
|
PS0f = R1f.y;
|
||||||
|
// 9
|
||||||
|
R5f.w = intBitsToFloat(0x3b808081);
|
||||||
|
R1f.w = (R127f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
PS1f = R1f.w;
|
||||||
|
// 10
|
||||||
|
R10f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R10f.w = R2f.w;
|
||||||
|
// 11
|
||||||
|
R9f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R9f.w = R1f.w;
|
||||||
|
// 12
|
||||||
|
R8f.xyz = vec3(R5f.x,R5f.y,R5f.z);
|
||||||
|
R8f.w = R5f.w;
|
||||||
|
// 13
|
||||||
|
R7f.xyz = vec3(R6f.x,R6f.y,R6f.z);
|
||||||
|
R7f.w = R6f.w;
|
||||||
|
// export
|
||||||
|
if( ((vec4(R7f.x, R7f.y, R7f.z, R7f.w)).a >= uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor1 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
passPixelColor3 = vec4(R9f.x, R9f.y, R9f.z, R9f.w);
|
||||||
|
passPixelColor5 = vec4(R10f.x, R10f.y, R10f.z, R10f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,523 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader cf2e9b7aab93e342
|
||||||
|
// Sheikah Tower - inactive, reflection pass
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[10];
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf494a800 res 1280x720x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x3df6f800 res 64x64x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(location = 1) noperspective in vec4 passParameterSem0;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
ivec4 R0i = ivec4(0);
|
||||||
|
ivec4 R1i = ivec4(0);
|
||||||
|
ivec4 R2i = ivec4(0);
|
||||||
|
ivec4 R3i = ivec4(0);
|
||||||
|
ivec4 R4i = ivec4(0);
|
||||||
|
ivec4 R5i = ivec4(0);
|
||||||
|
ivec4 R6i = ivec4(0);
|
||||||
|
ivec4 R7i = ivec4(0);
|
||||||
|
ivec4 R8i = ivec4(0);
|
||||||
|
ivec4 R9i = ivec4(0);
|
||||||
|
ivec4 R10i = ivec4(0);
|
||||||
|
ivec4 R11i = ivec4(0);
|
||||||
|
ivec4 R12i = ivec4(0);
|
||||||
|
ivec4 R13i = ivec4(0);
|
||||||
|
ivec4 R122i = ivec4(0);
|
||||||
|
ivec4 R123i = ivec4(0);
|
||||||
|
ivec4 R124i = ivec4(0);
|
||||||
|
ivec4 R125i = ivec4(0);
|
||||||
|
ivec4 R126i = ivec4(0);
|
||||||
|
ivec4 R127i = ivec4(0);
|
||||||
|
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
|
||||||
|
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
|
||||||
|
int PS0i = 0, PS1i = 0;
|
||||||
|
ivec4 tempi = ivec4(0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0i = floatBitsToInt(vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw));
|
||||||
|
R1i = floatBitsToInt(passParameterSem0);
|
||||||
|
// 0
|
||||||
|
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R1i.x)) + 1.0));
|
||||||
|
PV0i.x = R123i.x;
|
||||||
|
R6i.y = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(uf_remappedPS[0].y));
|
||||||
|
R0i.z = 0;
|
||||||
|
R2i.w = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
PS0i = floatBitsToInt(1.0 / intBitsToFloat(uf_remappedPS[1].x));
|
||||||
|
// 1
|
||||||
|
R2i.x = floatBitsToInt(intBitsToFloat(R0i.x) * intBitsToFloat(PS0i));
|
||||||
|
R0i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.x)));
|
||||||
|
PS1i = floatBitsToInt(1.0 / intBitsToFloat(uf_remappedPS[1].y));
|
||||||
|
// 2
|
||||||
|
R2i.y = floatBitsToInt(intBitsToFloat(R0i.y) * intBitsToFloat(PS1i));
|
||||||
|
R13i.w = 0;
|
||||||
|
R1i.w = floatBitsToInt(1.0 / intBitsToFloat(uf_remappedPS[2].w));
|
||||||
|
PS0i = R1i.w;
|
||||||
|
R3i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.xy)).xyzw);
|
||||||
|
R2i.x = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R2i.xy)).x);
|
||||||
|
// 0
|
||||||
|
R127i.x = floatBitsToInt((intBitsToFloat(R3i.x) * 2.0 + -(1.0)));
|
||||||
|
PV0i.x = R127i.x;
|
||||||
|
R127i.y = floatBitsToInt((intBitsToFloat(R3i.y) * 2.0 + -(1.0)));
|
||||||
|
PV0i.y = R127i.y;
|
||||||
|
R127i.z = floatBitsToInt((intBitsToFloat(R3i.z) * 2.0 + -(1.0)));
|
||||||
|
PV0i.z = R127i.z;
|
||||||
|
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),intBitsToFloat(R2i.x)) + intBitsToFloat(uf_remappedPS[3].x)));
|
||||||
|
PV0i.w = R127i.w;
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(R0i.w));
|
||||||
|
R126i.w = floatBitsToInt(tempResultf);
|
||||||
|
PS0i = R126i.w;
|
||||||
|
// 1
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R126i.y = floatBitsToInt(-(intBitsToFloat(PV0i.w)));
|
||||||
|
PS1i = R126i.y;
|
||||||
|
// 2
|
||||||
|
backupReg0i = R127i.w;
|
||||||
|
R125i.x = floatBitsToInt(-(intBitsToFloat(PS1i)) + intBitsToFloat(uf_remappedPS[4].z));
|
||||||
|
R9i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R126i.w)));
|
||||||
|
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), -(intBitsToFloat(R127i.w))));
|
||||||
|
PV0i.z = R126i.z;
|
||||||
|
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), -(intBitsToFloat(backupReg0i))));
|
||||||
|
PV0i.w = R127i.w;
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
|
||||||
|
PS0i = floatBitsToInt(tempResultf);
|
||||||
|
// 3
|
||||||
|
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
|
||||||
|
R11i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
|
||||||
|
R6i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
|
||||||
|
R124i.w = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + intBitsToFloat(uf_remappedPS[4].x));
|
||||||
|
PV1i.w = R124i.w;
|
||||||
|
R125i.y = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + intBitsToFloat(uf_remappedPS[4].y));
|
||||||
|
PS1i = R125i.y;
|
||||||
|
// 4
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(PV1i.w)),-(intBitsToFloat(PS1i)),-(intBitsToFloat(R125i.x)),-0.0),vec4(intBitsToFloat(uf_remappedPS[2].x),intBitsToFloat(uf_remappedPS[2].y),intBitsToFloat(uf_remappedPS[2].z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R10i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(R126i.w)));
|
||||||
|
PS0i = R10i.y;
|
||||||
|
// 5
|
||||||
|
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R126i.w)));
|
||||||
|
PV1i.x = R0i.x;
|
||||||
|
R3i.y = floatBitsToInt(-(intBitsToFloat(R3i.w)) + 1.0);
|
||||||
|
PV1i.y = R3i.y;
|
||||||
|
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(R1i.w));
|
||||||
|
R127i.z = clampFI32(R127i.z);
|
||||||
|
PV1i.z = R127i.z;
|
||||||
|
R0i.w = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[5].x));
|
||||||
|
R5i.y = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[5].y));
|
||||||
|
PS1i = R5i.y;
|
||||||
|
// 6
|
||||||
|
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),intBitsToFloat(PV1i.z)) + intBitsToFloat(uf_remappedPS[4].x)));
|
||||||
|
PV0i.x = R123i.x;
|
||||||
|
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),intBitsToFloat(PV1i.z)) + intBitsToFloat(uf_remappedPS[4].y)));
|
||||||
|
PV0i.y = R123i.y;
|
||||||
|
R125i.z = floatBitsToInt((intBitsToFloat(PV1i.y) * 0.5 + 0.5));
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.y)) + intBitsToFloat(0x3d4ccccd)));
|
||||||
|
R123i.w = clampFI32(R123i.w);
|
||||||
|
PV0i.w = R123i.w;
|
||||||
|
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.z), intBitsToFloat(PV1i.x)));
|
||||||
|
// 7
|
||||||
|
R126i.x = floatBitsToInt(intBitsToFloat(R126i.z) + -(intBitsToFloat(PV0i.x)));
|
||||||
|
R127i.y = floatBitsToInt(intBitsToFloat(R127i.w) + -(intBitsToFloat(PV0i.y)));
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PV0i.w)));
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),intBitsToFloat(R127i.z)) + intBitsToFloat(uf_remappedPS[4].z)));
|
||||||
|
PV1i.w = R123i.w;
|
||||||
|
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.y),intBitsToFloat(R10i.y)) + intBitsToFloat(PS0i)));
|
||||||
|
PS1i = R122i.x;
|
||||||
|
// 8
|
||||||
|
backupReg0i = R125i.z;
|
||||||
|
backupReg0i = R125i.z;
|
||||||
|
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.x),intBitsToFloat(R9i.y)) + intBitsToFloat(PS1i)));
|
||||||
|
PV0i.x = R127i.x;
|
||||||
|
R12i.y = floatBitsToInt(intBitsToFloat(PV1i.z) + -(1.0));
|
||||||
|
R125i.z = floatBitsToInt(intBitsToFloat(R126i.y) + -(intBitsToFloat(PV1i.w)));
|
||||||
|
PV0i.z = R125i.z;
|
||||||
|
R4i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(backupReg0i)));
|
||||||
|
R4i.w = floatBitsToInt(intBitsToFloat(R4i.w) / 2.0);
|
||||||
|
R8i.z = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x3ea2f983));
|
||||||
|
PS0i = R8i.z;
|
||||||
|
// 9
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R126i.x)),-(intBitsToFloat(R127i.y)),-(intBitsToFloat(PV0i.z)),-0.0),vec4(-(intBitsToFloat(R126i.x)),-(intBitsToFloat(R127i.y)),-(intBitsToFloat(PV0i.z)),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R3i.z = tempi.x;
|
||||||
|
PS1i = PV0i.x;
|
||||||
|
PS1i = floatBitsToInt(intBitsToFloat(PS1i) * 2.0);
|
||||||
|
// 10
|
||||||
|
R1i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.x),intBitsToFloat(PS1i)) + -(intBitsToFloat(R9i.y))));
|
||||||
|
R1i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.y),intBitsToFloat(PS1i)) + -(intBitsToFloat(R10i.y))));
|
||||||
|
R1i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.z),intBitsToFloat(PS1i)) + -(intBitsToFloat(R0i.x))));
|
||||||
|
R127i.w = R127i.x;
|
||||||
|
R127i.w = clampFI32(R127i.w);
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
|
||||||
|
PS0i = floatBitsToInt(tempResultf);
|
||||||
|
// 11
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R126i.x)), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R127i.y)), intBitsToFloat(PS0i)));
|
||||||
|
R5i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R125i.z)), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.z = R5i.z;
|
||||||
|
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].w), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.w = R125i.w;
|
||||||
|
R2i.x = floatBitsToInt(-(intBitsToFloat(R4i.w)) + 1.0);
|
||||||
|
PS1i = R2i.x;
|
||||||
|
// 12
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R11i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R126i.w = tempi.x;
|
||||||
|
R126i.y = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
|
||||||
|
PS0i = R126i.y;
|
||||||
|
// 13
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[2].x),intBitsToFloat(uf_remappedPS[2].y),intBitsToFloat(uf_remappedPS[2].z),-0.0),vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R127i.y = tempi.x;
|
||||||
|
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(R2i.x)) + intBitsToFloat(R4i.w)));
|
||||||
|
PS1i = R122i.x;
|
||||||
|
// 14
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.w),intBitsToFloat(R125i.y),intBitsToFloat(R125i.x),-0.0),vec4(intBitsToFloat(uf_remappedPS[2].x),intBitsToFloat(uf_remappedPS[2].y),intBitsToFloat(uf_remappedPS[2].z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R127i.w = tempi.x;
|
||||||
|
R7i.z = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
|
||||||
|
PS0i = R7i.z;
|
||||||
|
// 15
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.w),intBitsToFloat(R125i.y),intBitsToFloat(R125i.x),-0.0),vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R125i.z = tempi.x;
|
||||||
|
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R127i.y)));
|
||||||
|
PS1i = R126i.x;
|
||||||
|
// 16
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.w),intBitsToFloat(R125i.y),intBitsToFloat(R125i.x),-0.0),vec4(intBitsToFloat(R124i.w),intBitsToFloat(R125i.y),intBitsToFloat(R125i.x),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PV1i.x)));
|
||||||
|
// 17
|
||||||
|
backupReg0i = R126i.x;
|
||||||
|
R126i.x = floatBitsToInt(max(intBitsToFloat(R126i.w), -(1.0)));
|
||||||
|
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[2].w)),intBitsToFloat(R125i.z)) + intBitsToFloat(backupReg0i)));
|
||||||
|
PV1i.y = R123i.y;
|
||||||
|
R125i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R127i.y)) + intBitsToFloat(PS0i)));
|
||||||
|
R126i.w = floatBitsToInt(intBitsToFloat(R126i.y) * intBitsToFloat(0x40400000));
|
||||||
|
R5i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(R125i.w)));
|
||||||
|
PS1i = R5i.w;
|
||||||
|
// 18
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R0i.w),intBitsToFloat(R5i.y),intBitsToFloat(R0i.z),-0.0),vec4(intBitsToFloat(R0i.w),intBitsToFloat(R5i.y),intBitsToFloat(R5i.y),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R127i.z = tempi.x;
|
||||||
|
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.y));
|
||||||
|
// 19
|
||||||
|
backupReg0i = R126i.x;
|
||||||
|
R126i.x = floatBitsToInt(min(intBitsToFloat(backupReg0i), 1.0));
|
||||||
|
R0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(uf_remappedPS[7].y)));
|
||||||
|
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(uf_remappedPS[8].x)) + intBitsToFloat(uf_remappedPS[8].y)));
|
||||||
|
PV1i.w = floatBitsToInt(intBitsToFloat(R125i.z) * intBitsToFloat(PS0i));
|
||||||
|
PV1i.w = clampFI32(PV1i.w);
|
||||||
|
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R126i.w));
|
||||||
|
// 20
|
||||||
|
R3i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),intBitsToFloat(PV1i.w)) + intBitsToFloat(R124i.w)));
|
||||||
|
PV0i.x = R3i.x;
|
||||||
|
R8i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),intBitsToFloat(PV1i.w)) + intBitsToFloat(R125i.y)));
|
||||||
|
PV0i.y = R8i.y;
|
||||||
|
R2i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),intBitsToFloat(PV1i.w)) + intBitsToFloat(R125i.x)));
|
||||||
|
PV0i.z = R2i.z;
|
||||||
|
R3i.w = floatBitsToInt(intBitsToFloat(R3i.y) + intBitsToFloat(PS1i));
|
||||||
|
R3i.w = clampFI32(R3i.w);
|
||||||
|
R2i.y = floatBitsToInt(1.0 / intBitsToFloat(R127i.z));
|
||||||
|
PS0i = R2i.y;
|
||||||
|
// 21
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R1i.w = tempi.x;
|
||||||
|
R4i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(uf_remappedPS[8].z)) + intBitsToFloat(uf_remappedPS[8].w)));
|
||||||
|
PS1i = R4i.y;
|
||||||
|
R7i.y = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R4i.zy)).x);
|
||||||
|
// 0
|
||||||
|
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R1i.w)) + -(intBitsToFloat(R3i.x))));
|
||||||
|
PV0i.x = R126i.x;
|
||||||
|
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R1i.w)) + -(intBitsToFloat(R8i.y))));
|
||||||
|
PV0i.y = R125i.y;
|
||||||
|
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),intBitsToFloat(R1i.w)) + -(intBitsToFloat(R2i.z))));
|
||||||
|
PV0i.z = R127i.z;
|
||||||
|
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(uf_remappedPS[9].y)));
|
||||||
|
R124i.w = clampFI32(R124i.w);
|
||||||
|
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R3i.w));
|
||||||
|
// 1
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R126i.w = floatBitsToInt(intBitsToFloat(R3i.y) * intBitsToFloat(PS0i));
|
||||||
|
PS1i = R126i.w;
|
||||||
|
// 2
|
||||||
|
backupReg0i = R0i.z;
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R2i.w)),-(intBitsToFloat(R6i.y)),-(intBitsToFloat(R6i.y)),-0.0),vec4(intBitsToFloat(R0i.w),intBitsToFloat(R5i.y),intBitsToFloat(backupReg0i),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
|
||||||
|
// 3
|
||||||
|
backupReg0i = R0i.y;
|
||||||
|
R125i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(R2i.y));
|
||||||
|
R125i.x = clampFI32(R125i.x);
|
||||||
|
PV1i.x = R125i.x;
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(backupReg0i)));
|
||||||
|
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.w)),intBitsToFloat(R124i.w)) + 1.0));
|
||||||
|
PV1i.z = R123i.z;
|
||||||
|
PV1i.w = ((intBitsToFloat(R4i.z) > intBitsToFloat(uf_remappedPS[7].x))?int(0xFFFFFFFF):int(0x0));
|
||||||
|
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
|
||||||
|
// 4
|
||||||
|
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.w),intBitsToFloat(PV1i.x)) + intBitsToFloat(R2i.w)));
|
||||||
|
PV0i.x = R123i.x;
|
||||||
|
R126i.y = ((PV1i.w == 0)?(R7i.y):(PV1i.y));
|
||||||
|
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(PV1i.x)) + intBitsToFloat(R6i.y)));
|
||||||
|
PV0i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[6].w) * intBitsToFloat(PS1i));
|
||||||
|
PV0i.w = clampFI32(PV0i.w);
|
||||||
|
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(PV1i.z)));
|
||||||
|
PS0i = R5i.y;
|
||||||
|
// 5
|
||||||
|
backupReg0i = R126i.x;
|
||||||
|
backupReg1i = R125i.y;
|
||||||
|
backupReg2i = R127i.z;
|
||||||
|
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV0i.w)) + intBitsToFloat(R3i.x)));
|
||||||
|
PV1i.x = R126i.x;
|
||||||
|
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(PV0i.w)) + intBitsToFloat(R8i.y)));
|
||||||
|
PV1i.y = R125i.y;
|
||||||
|
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg2i),intBitsToFloat(PV0i.w)) + intBitsToFloat(R2i.z)));
|
||||||
|
PV1i.z = R127i.z;
|
||||||
|
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
|
||||||
|
PS1i = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[5].z));
|
||||||
|
// 6
|
||||||
|
backupReg0i = R125i.x;
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PS1i),intBitsToFloat(backupReg0i)) + intBitsToFloat(uf_remappedPS[0].z)));
|
||||||
|
PS0i = R125i.x;
|
||||||
|
// 7
|
||||||
|
R127i.x = floatBitsToInt(max(-(intBitsToFloat(R5i.z)), 0.0));
|
||||||
|
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].y), intBitsToFloat(R126i.y)));
|
||||||
|
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),intBitsToFloat(R125i.z)) + intBitsToFloat(R124i.w)));
|
||||||
|
PV1i.z = R123i.z;
|
||||||
|
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].x), intBitsToFloat(R126i.y)));
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
|
||||||
|
PS1i = floatBitsToInt(tempResultf);
|
||||||
|
// 8
|
||||||
|
backupReg0i = R126i.x;
|
||||||
|
backupReg1i = R127i.z;
|
||||||
|
backupReg2i = R126i.y;
|
||||||
|
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.x = R126i.x;
|
||||||
|
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.y = R126i.y;
|
||||||
|
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.z = R127i.z;
|
||||||
|
R125i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.x)),intBitsToFloat(PV1i.z)) + 1.0));
|
||||||
|
R125i.w = clampFI32(R125i.w);
|
||||||
|
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].z), intBitsToFloat(backupReg2i)));
|
||||||
|
PS0i = R124i.y;
|
||||||
|
// 9
|
||||||
|
backupReg0i = R127i.x;
|
||||||
|
R127i.x = floatBitsToInt(intBitsToFloat(R9i.y) + intBitsToFloat(PV0i.x));
|
||||||
|
PV1i.x = R127i.x;
|
||||||
|
R125i.y = floatBitsToInt(intBitsToFloat(R10i.y) + intBitsToFloat(PV0i.y));
|
||||||
|
PV1i.y = R125i.y;
|
||||||
|
R125i.z = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(PV0i.z));
|
||||||
|
PV1i.z = R125i.z;
|
||||||
|
PV1i.w = floatBitsToInt(min(intBitsToFloat(backupReg0i), 1.0));
|
||||||
|
PS1i = floatBitsToInt(-(intBitsToFloat(R5i.y)) + 1.0);
|
||||||
|
// 10
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R8i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(PS1i)) + intBitsToFloat(R5i.y)));
|
||||||
|
PS0i = R8i.y;
|
||||||
|
// 11
|
||||||
|
backupReg0i = R126i.y;
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R11i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(backupReg0i),intBitsToFloat(R127i.z),0.0)));
|
||||||
|
tempi.x = clampFI32(tempi.x);
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R126i.y = tempi.x;
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
|
||||||
|
PS1i = floatBitsToInt(tempResultf);
|
||||||
|
// 12
|
||||||
|
backupReg0i = R127i.x;
|
||||||
|
backupReg1i = R125i.y;
|
||||||
|
backupReg2i = R125i.z;
|
||||||
|
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.x = R127i.x;
|
||||||
|
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.y = R125i.y;
|
||||||
|
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg2i), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.z = R125i.z;
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R2i.x)) + intBitsToFloat(R4i.w)));
|
||||||
|
PV0i.w = R123i.w;
|
||||||
|
R125i.x = floatBitsToInt(intBitsToFloat(R124i.w) * intBitsToFloat(0x3ea2f983));
|
||||||
|
PS0i = R125i.x;
|
||||||
|
// 13
|
||||||
|
backupReg0i = R0i.x;
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.y),intBitsToFloat(R10i.y),intBitsToFloat(backupReg0i),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
tempi.x = clampFI32(tempi.x);
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R126i.x = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
|
||||||
|
PS1i = R126i.x;
|
||||||
|
// 14
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R11i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R125i.y),intBitsToFloat(R125i.z),0.0)));
|
||||||
|
tempi.x = clampFI32(tempi.x);
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R125i.z = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
|
||||||
|
PS0i = R125i.z;
|
||||||
|
// 15
|
||||||
|
backupReg0i = R127i.y;
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
|
||||||
|
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.y = R127i.y;
|
||||||
|
PV1i.z = floatBitsToInt(intBitsToFloat(backupReg0i) * intBitsToFloat(0x3ea2f983));
|
||||||
|
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.z), intBitsToFloat(R126i.x)));
|
||||||
|
PS1i = floatBitsToInt(intBitsToFloat(R124i.y) * intBitsToFloat(0x3ea2f983));
|
||||||
|
// 16
|
||||||
|
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PV1i.y)));
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.y), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.y), intBitsToFloat(R125i.x)));
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.y),intBitsToFloat(PV1i.x)) + 1.0));
|
||||||
|
PV0i.w = R123i.w;
|
||||||
|
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.y), intBitsToFloat(PV1i.z)));
|
||||||
|
// 17
|
||||||
|
R13i.x = floatBitsToInt(min(intBitsToFloat(PV0i.z), intBitsToFloat(0x42000000)));
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PV0i.w)));
|
||||||
|
R13i.z = floatBitsToInt(min(intBitsToFloat(PV0i.y), intBitsToFloat(0x42000000)));
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PV0i.x)));
|
||||||
|
R13i.y = floatBitsToInt(min(intBitsToFloat(PS0i), intBitsToFloat(0x42000000)));
|
||||||
|
PS1i = R13i.y;
|
||||||
|
// 18
|
||||||
|
R125i.z = floatBitsToInt((intBitsToFloat(PV1i.w) * intBitsToFloat(0x3f75c28f) + intBitsToFloat(0x3d23d70a)));
|
||||||
|
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.y));
|
||||||
|
// 19
|
||||||
|
PV1i.w = floatBitsToInt(intBitsToFloat(R8i.z) * intBitsToFloat(PS0i));
|
||||||
|
// 20
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R125i.z)));
|
||||||
|
// 21
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PV0i.y)));
|
||||||
|
// 22
|
||||||
|
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.x) * 0.25);
|
||||||
|
// 23
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PV0i.w)));
|
||||||
|
// 24
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(PV1i.z)));
|
||||||
|
// 25
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV0i.y)));
|
||||||
|
// 26
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].z), intBitsToFloat(PV1i.x)));
|
||||||
|
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].y), intBitsToFloat(PV1i.x)));
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].x), intBitsToFloat(PV1i.x)));
|
||||||
|
// 27
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(PV0i.w)));
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(PV0i.y)));
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(PV0i.z)));
|
||||||
|
// 28
|
||||||
|
backupReg0i = R8i.y;
|
||||||
|
backupReg0i = R8i.y;
|
||||||
|
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.y), intBitsToFloat(PV1i.w)));
|
||||||
|
R8i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.x)));
|
||||||
|
R5i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.z)));
|
||||||
|
// 0
|
||||||
|
backupReg0i = R4i.x;
|
||||||
|
R4i.x = floatBitsToInt(min(intBitsToFloat(R8i.y), intBitsToFloat(0x42000000)));
|
||||||
|
R4i.y = floatBitsToInt(min(intBitsToFloat(backupReg0i), intBitsToFloat(0x42000000)));
|
||||||
|
R4i.z = floatBitsToInt(min(intBitsToFloat(R5i.w), intBitsToFloat(0x42000000)));
|
||||||
|
// 1
|
||||||
|
R0i.xyz = ivec3(R13i.x,R13i.y,R13i.z);
|
||||||
|
R0i.w = R13i.w;
|
||||||
|
// 2
|
||||||
|
R1i.xyz = ivec3(R4i.x,R4i.y,R4i.z);
|
||||||
|
R1i.w = R4i.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
|
||||||
|
passPixelColor1 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
colhsv = rgb2hsv(passPixelColor1.rgb);
|
||||||
|
colhsv = rgb2hsv(passPixelColor1.rgb);
|
||||||
|
passPixelColor1.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor1.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,189 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader d178de668517df1e
|
||||||
|
// Shrine - entrance top
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb2ec1000 res 512x512x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb2eeb000 res 256x256x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb2ee2000 res 256x256x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem6;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R8f = vec4(0.0);
|
||||||
|
vec4 R9f = vec4(0.0);
|
||||||
|
vec4 R10f = vec4(0.0);
|
||||||
|
vec4 R122f = 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 = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem6;
|
||||||
|
R5f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R0f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R6f.xyzw = (texture(textureUnitPS3, R0f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
R126f.x = (R5f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R126f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
R127f.w = (R5f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R127f.x = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.w);
|
||||||
|
R127f.y = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.z);
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R126f.w = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.y);
|
||||||
|
R122f.x = (mul_nonIEEE(-(R4f.z),intBitsToFloat(uf_remappedPS[0].x)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R122f.x = clamp(R122f.x, 0.0, 1.0);
|
||||||
|
PS1f = R122f.x;
|
||||||
|
// 2
|
||||||
|
R125f.x = R5f.z * intBitsToFloat(0x427f0000);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.w,R127f.w) + PV1f.z);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.w, R127f.w);
|
||||||
|
R127f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),PS1f) + 1.0);
|
||||||
|
PV0f.w = R127f.w;
|
||||||
|
R5f.x = mul_nonIEEE(R1f.x, R6f.x);
|
||||||
|
PS0f = R5f.x;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = -(PV0f.y) + 1.0;
|
||||||
|
PV1f.y = mul_nonIEEE(backupReg0f, PV0f.z);
|
||||||
|
PV1f.z = mul_nonIEEE(R126f.w, PV0f.z);
|
||||||
|
PV1f.w = mul_nonIEEE(R127f.y, PV0f.z);
|
||||||
|
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.w);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
R126f.x = (mul_nonIEEE(R3f.z,backupReg0f) + PV1f.w)/2.0;
|
||||||
|
R127f.y = (mul_nonIEEE(R3f.y,backupReg0f) + PV1f.z)/2.0;
|
||||||
|
R126f.z = (mul_nonIEEE(R3f.x,backupReg0f) + PV1f.y)/2.0;
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y), R127f.w);
|
||||||
|
PS0f = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z), R127f.w);
|
||||||
|
// 5
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
backupReg1f = R127f.x;
|
||||||
|
R127f.x = floor(R125f.x);
|
||||||
|
R127f.x *= 4.0;
|
||||||
|
R126f.y = mul_nonIEEE(R0f.w, PS0f);
|
||||||
|
PV1f.z = mul_nonIEEE(R0f.w, R127f.z);
|
||||||
|
PV1f.w = mul_nonIEEE(backupReg0f, PV0f.w);
|
||||||
|
PS1f = sqrt(backupReg1f);
|
||||||
|
PS1f /= 2.0;
|
||||||
|
// 6
|
||||||
|
backupReg0f = R126f.x;
|
||||||
|
backupReg1f = R2f.y;
|
||||||
|
backupReg2f = R126f.z;
|
||||||
|
R126f.x = (mul_nonIEEE(R2f.z,PS1f) + backupReg0f);
|
||||||
|
R2f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w), PV1f.w);
|
||||||
|
R126f.z = (mul_nonIEEE(backupReg1f,PS1f) + R127f.y);
|
||||||
|
R127f.w = (mul_nonIEEE(R2f.x,PS1f) + backupReg2f);
|
||||||
|
R2f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w), PV1f.z);
|
||||||
|
PS0f = R2f.x;
|
||||||
|
// 7
|
||||||
|
R6f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R5f.y = mul_nonIEEE(R1f.x, R6f.y);
|
||||||
|
R2f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w), R126f.y);
|
||||||
|
R5f.z = mul_nonIEEE(R1f.x, R6f.z);
|
||||||
|
PS1f = R5f.z;
|
||||||
|
// 8
|
||||||
|
R1f.x = R127f.w + 0.5;
|
||||||
|
R6f.y = intBitsToFloat(uf_remappedPS[2].z);
|
||||||
|
R1f.z = R126f.x + 0.5;
|
||||||
|
R2f.w = 1.0;
|
||||||
|
R1f.y = R126f.z + 0.5;
|
||||||
|
PS0f = R1f.y;
|
||||||
|
// 9
|
||||||
|
R5f.w = intBitsToFloat(0x3b808081);
|
||||||
|
R1f.w = (R127f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
PS1f = R1f.w;
|
||||||
|
// 10
|
||||||
|
R10f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R10f.w = R2f.w;
|
||||||
|
// 11
|
||||||
|
R9f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R9f.w = R1f.w;
|
||||||
|
// 12
|
||||||
|
R8f.xyz = vec3(R5f.x,R5f.y,R5f.z);
|
||||||
|
R8f.w = R5f.w;
|
||||||
|
// 13
|
||||||
|
R7f.xyz = vec3(R6f.x,R6f.y,R6f.z);
|
||||||
|
R7f.w = R6f.w;
|
||||||
|
// export
|
||||||
|
if( ((vec4(R7f.x, R7f.y, R7f.z, R7f.w)).a >= uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
passPixelColor1 = vec4(R8f.x, R8f.y, R8f.z, R8f.w);
|
||||||
|
passPixelColor3 = vec4(R9f.x, R9f.y, R9f.z, R9f.w);
|
||||||
|
passPixelColor5 = vec4(R10f.x, R10f.y, R10f.z, R10f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,88 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader d3ac3a61f7749326
|
||||||
|
// Hateno fire particles
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fee000 res 64x64x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x7) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec4 R0f = vec4(0.0);
|
||||||
|
vec4 R1f = vec4(0.0);
|
||||||
|
vec4 R2f = vec4(0.0);
|
||||||
|
vec4 R3f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem8;
|
||||||
|
R3f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
backupReg1f = R0f.x;
|
||||||
|
PV0f.x = mul_nonIEEE(R0f.w, R3f.w);
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
PV0f.y = R0f.z + -(R1f.z);
|
||||||
|
PV0f.z = backupReg0f + -(R1f.y);
|
||||||
|
PV0f.w = backupReg1f + -(R1f.x);
|
||||||
|
// 1
|
||||||
|
backupReg0f = R1f.x;
|
||||||
|
backupReg1f = R1f.y;
|
||||||
|
backupReg2f = R1f.z;
|
||||||
|
R1f.x = (mul_nonIEEE(PV0f.w,R3f.x) + backupReg0f);
|
||||||
|
R1f.y = (mul_nonIEEE(PV0f.z,R3f.y) + backupReg1f);
|
||||||
|
R1f.z = (mul_nonIEEE(PV0f.y,R3f.z) + backupReg2f);
|
||||||
|
R1f.w = mul_nonIEEE(R2f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R1f.x, R1f.y, R1f.z, R1f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,170 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader d48de6ada1e9ad03
|
||||||
|
// Sheikah Towers - active - top part
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb1309000 res 1024x512x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb138b000 res 1024x512x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb134a000 res 512x1024x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 2 0 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem5;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec4 R0f = vec4(0.0);
|
||||||
|
vec4 R1f = vec4(0.0);
|
||||||
|
vec4 R2f = vec4(0.0);
|
||||||
|
vec4 R3f = vec4(0.0);
|
||||||
|
vec4 R4f = vec4(0.0);
|
||||||
|
vec4 R5f = vec4(0.0);
|
||||||
|
vec4 R6f = vec4(0.0);
|
||||||
|
vec4 R7f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 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 = passParameterSem5;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R1f.w = (texture(textureUnitPS5, R0f.zw).x);
|
||||||
|
R0f.xyz = (texture(textureUnitPS3, R0f.xy).xyz);
|
||||||
|
// 0
|
||||||
|
R127f.x = (R4f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.x = R127f.x;
|
||||||
|
PV0f.y = mul_nonIEEE(R2f.y, R3f.z);
|
||||||
|
PV0f.z = mul_nonIEEE(R2f.x, R3f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(R2f.z, R3f.x);
|
||||||
|
R127f.w = (R4f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.w;
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(-(R3f.z),R2f.x) + PV0f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(-(R3f.y),R2f.z) + PV0f.y);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
PV1f.z = mul_nonIEEE(PV0f.x, PV0f.x);
|
||||||
|
R123f.w = (mul_nonIEEE(-(R3f.x),R2f.y) + PV0f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
PS1f = mul_nonIEEE(R3f.w, PS0f);
|
||||||
|
// 2
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.y, PS1f);
|
||||||
|
R123f.y = (mul_nonIEEE(R127f.w,R127f.w) + PV1f.z);
|
||||||
|
R123f.y = clamp(R123f.y, 0.0, 1.0);
|
||||||
|
PV0f.y = R123f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(PV1f.x, PS1f);
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.w, PS1f);
|
||||||
|
R127f.y = R4f.z * intBitsToFloat(0x427f0000);
|
||||||
|
PS0f = R127f.y;
|
||||||
|
// 3
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
R127f.x = -(PV0f.y) + 1.0;
|
||||||
|
R126f.y = (mul_nonIEEE(R3f.y,backupReg0f) + PV0f.z)/2.0;
|
||||||
|
R126f.z = (mul_nonIEEE(R3f.x,backupReg0f) + PV0f.x)/2.0;
|
||||||
|
R127f.w = (mul_nonIEEE(R3f.z,backupReg0f) + PV0f.w)/2.0;
|
||||||
|
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), R1f.w);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 4
|
||||||
|
R126f.x = floor(R127f.y);
|
||||||
|
R126f.x *= 4.0;
|
||||||
|
PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), R1f.w);
|
||||||
|
R3f.z = mul_nonIEEE(R1f.x, R0f.z);
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R1f.w);
|
||||||
|
R3f.x = mul_nonIEEE(R1f.x, R0f.x);
|
||||||
|
PS0f = R3f.x;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R0f.y;
|
||||||
|
R0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.z);
|
||||||
|
R0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.w);
|
||||||
|
R0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.y);
|
||||||
|
R1f.w = 1.0;
|
||||||
|
R3f.y = mul_nonIEEE(R1f.x, backupReg0f);
|
||||||
|
PS1f = R3f.y;
|
||||||
|
// 6
|
||||||
|
R1f.x = intBitsToFloat(0x3c808081);
|
||||||
|
R1f.y = intBitsToFloat(uf_remappedPS[2].z);
|
||||||
|
R0f.w = 1.0;
|
||||||
|
PS0f = sqrt(R127f.x);
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 7
|
||||||
|
R123f.x = (mul_nonIEEE(R2f.z,PS0f) + R127f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.z = (mul_nonIEEE(R2f.y,PS0f) + R126f.y);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
R123f.w = (mul_nonIEEE(R2f.x,PS0f) + R126f.z);
|
||||||
|
PV1f.w = R123f.w;
|
||||||
|
R3f.w = intBitsToFloat(0x3b808081);
|
||||||
|
PS1f = R3f.w;
|
||||||
|
// 8
|
||||||
|
R2f.xyz = vec3(PV1f.w,PV1f.z,PV1f.x) + vec3(0.5,0.5,0.5);
|
||||||
|
R2f.w = (R126f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
// 9
|
||||||
|
R7f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R7f.w = R0f.w;
|
||||||
|
// 10
|
||||||
|
R6f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R6f.w = R2f.w;
|
||||||
|
// 11
|
||||||
|
R5f.xyz = vec3(R3f.x,R3f.y,R3f.z);
|
||||||
|
R5f.w = R3f.w;
|
||||||
|
// 12
|
||||||
|
R4f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R4f.w = R1f.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||||
|
passPixelColor1 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||||
|
passPixelColor3 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor5 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,120 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader db8bc69330c08206
|
||||||
|
// Shrine - elevator particles 1
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x2140e000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x214e1000 res 64x400x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 0 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x214e1000 res 64x400x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 0 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 5) in vec4 passParameterSem9;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R5f = passParameterSem9;
|
||||||
|
R3f.w = (texture(textureUnitPS0, R4f.xy).w);
|
||||||
|
R4f.z = (texture(textureUnitPS1, R4f.zw).w);
|
||||||
|
R5f.y = (texture(textureUnitPS2, R5f.xy).w);
|
||||||
|
// 0
|
||||||
|
PV0f.w = mul_nonIEEE(R3f.w, R4f.z);
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
PV1f.y = R2f.z * PS0f;
|
||||||
|
R123f.z = (mul_nonIEEE(PV0f.w,R5f.y) + -(R0f.w));
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R2f.x;
|
||||||
|
backupReg1f = R2f.y;
|
||||||
|
backupReg2f = R1f.w;
|
||||||
|
R2f.x = mul_nonIEEE(backupReg0f, PS1f);
|
||||||
|
R2f.y = mul_nonIEEE(backupReg1f, PS1f);
|
||||||
|
R2f.z = (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[0].w)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R1f.w = mul_nonIEEE(backupReg2f, PV1f.z);
|
||||||
|
R1f.w = clamp(R1f.w, 0.0, 1.0);
|
||||||
|
R2f.x = (texture(textureUnitPS4, R2f.xy).x);
|
||||||
|
// 0
|
||||||
|
R127f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R2f.x) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
PS0f = 1.0 / R2f.z;
|
||||||
|
// 1
|
||||||
|
PV1f.y = -(intBitsToFloat(uf_remappedPS[0].z)) * PS0f;
|
||||||
|
R127f.z = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 2
|
||||||
|
PV0f.w = -(PV1f.y) + R127f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.y = PV0f.w * R127f.z;
|
||||||
|
PV1f.y = clamp(PV1f.y, 0.0, 1.0);
|
||||||
|
// 4
|
||||||
|
PV0f.x = mul_nonIEEE(R1f.w, PV1f.y);
|
||||||
|
// 5
|
||||||
|
R0f.w = mul_nonIEEE(R3f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,103 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader e53233e53de8434f
|
||||||
|
// Bomb - debris
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x2118a000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x2118e000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 0 0 0 border: 0
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x2118a000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem4;
|
||||||
|
layout(location = 3) in vec4 passParameterSem7;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 5) in vec4 passParameterSem9;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R123f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem4;
|
||||||
|
R3f = passParameterSem7;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R5f = passParameterSem9;
|
||||||
|
R1f.z = (texture(textureUnitPS1, R4f.zw).w);
|
||||||
|
R4f.w = (texture(textureUnitPS0, R4f.xy).w);
|
||||||
|
R5f.y = (texture(textureUnitPS2, R5f.xy).w);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
PV0f.x = -(R1f.z) + 1.0;
|
||||||
|
R6f.y = mul_nonIEEE(R0f.y, R3f.y);
|
||||||
|
R6f.z = mul_nonIEEE(R0f.z, R3f.z);
|
||||||
|
R6f.x = mul_nonIEEE(backupReg0f, R3f.x);
|
||||||
|
PS0f = R6f.x;
|
||||||
|
// 1
|
||||||
|
PV1f.w = R4f.w + -(PV0f.x);
|
||||||
|
// 2
|
||||||
|
PV0f.z = mul_nonIEEE(PV1f.w, R5f.y);
|
||||||
|
// 3
|
||||||
|
R123f.y = (mul_nonIEEE(R3f.w,PV0f.z) + -(R0f.w));
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
// 4
|
||||||
|
PV0f.x = mul_nonIEEE(R1f.w, PV1f.y);
|
||||||
|
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
|
||||||
|
// 5
|
||||||
|
R6f.w = mul_nonIEEE(R2f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R6f.x, R6f.y, R6f.z, R6f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,426 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader e95d54571be1c0a9
|
||||||
|
// Shrine - balls, reflection pass
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[8];
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf494a800 res 1280x720x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x3df6f800 res 64x64x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 2 border: 1
|
||||||
|
layout(location = 1) noperspective in vec4 passParameterSem0;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
ivec4 R0i = ivec4(0);
|
||||||
|
ivec4 R1i = ivec4(0);
|
||||||
|
ivec4 R2i = ivec4(0);
|
||||||
|
ivec4 R3i = ivec4(0);
|
||||||
|
ivec4 R4i = ivec4(0);
|
||||||
|
ivec4 R5i = ivec4(0);
|
||||||
|
ivec4 R6i = ivec4(0);
|
||||||
|
ivec4 R7i = ivec4(0);
|
||||||
|
ivec4 R8i = ivec4(0);
|
||||||
|
ivec4 R123i = ivec4(0);
|
||||||
|
ivec4 R124i = ivec4(0);
|
||||||
|
ivec4 R125i = ivec4(0);
|
||||||
|
ivec4 R126i = ivec4(0);
|
||||||
|
ivec4 R127i = ivec4(0);
|
||||||
|
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
|
||||||
|
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
|
||||||
|
int PS0i = 0, PS1i = 0;
|
||||||
|
ivec4 tempi = ivec4(0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0i = floatBitsToInt(vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw));
|
||||||
|
R1i = floatBitsToInt(passParameterSem0);
|
||||||
|
// 0
|
||||||
|
PV0i.x = floatBitsToInt(intBitsToFloat(R1i.x) + -(intBitsToFloat(uf_remappedPS[0].x)));
|
||||||
|
R127i.y = floatBitsToInt(intBitsToFloat(R1i.y) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R1i.x)) + 1.0));
|
||||||
|
PV0i.w = R123i.w;
|
||||||
|
PS0i = floatBitsToInt(1.0 / intBitsToFloat(uf_remappedPS[1].x));
|
||||||
|
// 1
|
||||||
|
R2i.x = floatBitsToInt(intBitsToFloat(R0i.x) * intBitsToFloat(PS0i));
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
|
||||||
|
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.w)));
|
||||||
|
PV1i.z = R123i.z;
|
||||||
|
R5i.w = floatBitsToInt((0.0 * intBitsToFloat(uf_remappedPS[2].w) + 1.0));
|
||||||
|
PS1i = floatBitsToInt(1.0 / intBitsToFloat(uf_remappedPS[1].y));
|
||||||
|
// 2
|
||||||
|
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R127i.y)) + intBitsToFloat(PV1i.y)));
|
||||||
|
R2i.y = floatBitsToInt(intBitsToFloat(R0i.y) * intBitsToFloat(PS1i));
|
||||||
|
R8i.w = 0;
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.z));
|
||||||
|
R0i.y = floatBitsToInt(tempResultf);
|
||||||
|
PS0i = R0i.y;
|
||||||
|
R3i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.xy)).xyzw);
|
||||||
|
R2i.x = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R2i.xy)).x);
|
||||||
|
// 0
|
||||||
|
R127i.x = floatBitsToInt((intBitsToFloat(R3i.x) * 2.0 + -(1.0)));
|
||||||
|
PV0i.x = R127i.x;
|
||||||
|
R127i.y = floatBitsToInt((intBitsToFloat(R3i.y) * 2.0 + -(1.0)));
|
||||||
|
PV0i.y = R127i.y;
|
||||||
|
R127i.z = floatBitsToInt((intBitsToFloat(R3i.z) * 2.0 + -(1.0)));
|
||||||
|
PV0i.z = R127i.z;
|
||||||
|
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),intBitsToFloat(R2i.x)) + intBitsToFloat(uf_remappedPS[3].x)));
|
||||||
|
PV0i.w = R127i.w;
|
||||||
|
R126i.w = floatBitsToInt(intBitsToFloat(R3i.w) * intBitsToFloat(0x437f0000));
|
||||||
|
PS0i = R126i.w;
|
||||||
|
// 1
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R124i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),-(intBitsToFloat(PV0i.w))) + -(intBitsToFloat(uf_remappedPS[4].x))));
|
||||||
|
PS1i = R124i.x;
|
||||||
|
// 2
|
||||||
|
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R0i.y)));
|
||||||
|
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),-(intBitsToFloat(R127i.w))) + -(intBitsToFloat(uf_remappedPS[4].y))));
|
||||||
|
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),-(intBitsToFloat(R127i.w))) + -(intBitsToFloat(uf_remappedPS[4].z))));
|
||||||
|
R0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(R0i.y)));
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
|
||||||
|
PS0i = floatBitsToInt(tempResultf);
|
||||||
|
// 3
|
||||||
|
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
|
||||||
|
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
|
||||||
|
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
|
||||||
|
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R0i.y)));
|
||||||
|
PS1i = int(intBitsToFloat(R126i.w));
|
||||||
|
// 4
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R124i.x)),-(intBitsToFloat(R2i.y)),-(intBitsToFloat(R125i.z)),-0.0),vec4(-(intBitsToFloat(R124i.x)),-(intBitsToFloat(R2i.y)),-(intBitsToFloat(R125i.z)),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R1i.x = PS1i & 0x00000002;
|
||||||
|
PS0i = R1i.x;
|
||||||
|
// 5
|
||||||
|
R125i.x = floatBitsToInt(max(intBitsToFloat(PV0i.x), intBitsToFloat(0x3a83126f)));
|
||||||
|
PV1i.x = R125i.x;
|
||||||
|
R0i.y = floatBitsToInt(-(intBitsToFloat(R3i.w)) + 1.0);
|
||||||
|
R7i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[0].z)),intBitsToFloat(R0i.x)) + 1.0));
|
||||||
|
R7i.z = clampFI32(R7i.z);
|
||||||
|
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(R1i.w)));
|
||||||
|
// 6
|
||||||
|
R126i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R1i.y),intBitsToFloat(PS1i),-0.0),vec4(intBitsToFloat(R4i.x),intBitsToFloat(R0i.w),1.0,0.0)));
|
||||||
|
PV0i.x = R126i.x;
|
||||||
|
PV0i.y = R126i.x;
|
||||||
|
PV0i.z = R126i.x;
|
||||||
|
PV0i.w = R126i.x;
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
|
||||||
|
PS0i = floatBitsToInt(tempResultf);
|
||||||
|
// 7
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R124i.x)), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R2i.y)), intBitsToFloat(PS0i)));
|
||||||
|
R5i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R125i.z)), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.z = R5i.z;
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].w), intBitsToFloat(PS0i)));
|
||||||
|
R126i.w = PV0i.x;
|
||||||
|
R126i.w = floatBitsToInt(intBitsToFloat(R126i.w) * 2.0);
|
||||||
|
PS1i = R126i.w;
|
||||||
|
// 8
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R1i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R126i.z = tempi.x;
|
||||||
|
R124i.y = floatBitsToInt(min(intBitsToFloat(PV1i.w), 1.0));
|
||||||
|
PS0i = R124i.y;
|
||||||
|
// 9
|
||||||
|
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),intBitsToFloat(R126i.w)) + -(intBitsToFloat(R4i.x))));
|
||||||
|
PV1i.x = R127i.x;
|
||||||
|
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R126i.w)) + -(intBitsToFloat(R0i.w))));
|
||||||
|
PV1i.y = R127i.y;
|
||||||
|
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.z),intBitsToFloat(R126i.w)) + -(intBitsToFloat(R1i.w))));
|
||||||
|
PV1i.z = R127i.z;
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(0x3d4ccccd)));
|
||||||
|
R123i.w = clampFI32(R123i.w);
|
||||||
|
PV1i.w = R123i.w;
|
||||||
|
R126i.y = floatBitsToInt((intBitsToFloat(R0i.y) * 0.5 + 0.5));
|
||||||
|
PS1i = R126i.y;
|
||||||
|
// 10
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R124i.x)),-(intBitsToFloat(R2i.y)),-(intBitsToFloat(R125i.z)),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.w)));
|
||||||
|
PS0i = R125i.y;
|
||||||
|
// 11
|
||||||
|
backupReg0i = R127i.x;
|
||||||
|
backupReg1i = R127i.z;
|
||||||
|
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV0i.x)) + intBitsToFloat(R124i.x)));
|
||||||
|
PV1i.x = R127i.x;
|
||||||
|
R3i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(PV0i.x)) + intBitsToFloat(R2i.y)));
|
||||||
|
PV1i.y = R3i.y;
|
||||||
|
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(PV0i.x)) + intBitsToFloat(R125i.z)));
|
||||||
|
PV1i.z = R127i.z;
|
||||||
|
R2i.w = floatBitsToInt(intBitsToFloat(PS0i) + -(1.0));
|
||||||
|
R127i.y = floatBitsToInt(max(intBitsToFloat(R126i.z), -(1.0)));
|
||||||
|
PS1i = R127i.y;
|
||||||
|
// 12
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R126i.y)));
|
||||||
|
R2i.x = floatBitsToInt(intBitsToFloat(R2i.x) / 2.0);
|
||||||
|
PS0i = R2i.x;
|
||||||
|
// 13
|
||||||
|
R3i.x = floatBitsToInt(-(intBitsToFloat(PS0i)) + 1.0);
|
||||||
|
PV1i.x = R3i.x;
|
||||||
|
PV1i.y = R126i.x;
|
||||||
|
PV1i.y = clampFI32(PV1i.y);
|
||||||
|
R6i.z = floatBitsToInt(intBitsToFloat(R125i.y) * intBitsToFloat(0x3ea2f983));
|
||||||
|
PV1i.w = floatBitsToInt(min(intBitsToFloat(R127i.y), 1.0));
|
||||||
|
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
|
||||||
|
// 14
|
||||||
|
backupReg0i = R125i.x;
|
||||||
|
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.x)) + intBitsToFloat(R2i.x)));
|
||||||
|
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(uf_remappedPS[2].y)));
|
||||||
|
R127i.y = clampFI32(R127i.y);
|
||||||
|
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(uf_remappedPS[6].z)) + intBitsToFloat(uf_remappedPS[6].w)));
|
||||||
|
PV0i.z = R126i.z;
|
||||||
|
R4i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(R124i.y)));
|
||||||
|
PV0i.w = R4i.w;
|
||||||
|
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
|
||||||
|
// 15
|
||||||
|
backupReg0i = R124i.y;
|
||||||
|
R0i.x = ((intBitsToFloat(PV0i.z) > 0.0)?int(0xFFFFFFFF):int(0x0));
|
||||||
|
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.z)));
|
||||||
|
R2i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_remappedPS[7].y)));
|
||||||
|
PV1i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[5].w) * intBitsToFloat(PS0i));
|
||||||
|
PV1i.w = clampFI32(PV1i.w);
|
||||||
|
R126i.x = floatBitsToInt(1.0 / intBitsToFloat(backupReg0i));
|
||||||
|
PS1i = R126i.x;
|
||||||
|
// 16
|
||||||
|
backupReg0i = R127i.x;
|
||||||
|
backupReg1i = R127i.z;
|
||||||
|
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV1i.w)) + -(intBitsToFloat(R124i.x))));
|
||||||
|
PV0i.x = R127i.x;
|
||||||
|
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.y),intBitsToFloat(PV1i.w)) + -(intBitsToFloat(R2i.y))));
|
||||||
|
PV0i.y = R125i.y;
|
||||||
|
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(PV1i.w)) + -(intBitsToFloat(R125i.z))));
|
||||||
|
PV0i.z = R127i.z;
|
||||||
|
PV0i.w = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x40400000));
|
||||||
|
R3i.y = floatBitsToInt(1.0 / intBitsToFloat(R125i.x));
|
||||||
|
PS0i = R3i.y;
|
||||||
|
// 17
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
|
||||||
|
// 18
|
||||||
|
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(R124i.y)));
|
||||||
|
R6i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.y)),intBitsToFloat(R127i.y)) + 1.0));
|
||||||
|
R3i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(uf_remappedPS[6].x)) + intBitsToFloat(uf_remappedPS[6].y)));
|
||||||
|
PV0i.w = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(PS1i));
|
||||||
|
PV0i.w = clampFI32(PV0i.w);
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
|
||||||
|
PS0i = floatBitsToInt(tempResultf);
|
||||||
|
// 19
|
||||||
|
backupReg0i = R0i.x;
|
||||||
|
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.x = R0i.x;
|
||||||
|
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.y = R2i.y;
|
||||||
|
R1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.z = R1i.z;
|
||||||
|
R123i.w = ((backupReg0i == 0)?(0):(PV0i.x));
|
||||||
|
PV1i.w = R123i.w;
|
||||||
|
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
|
||||||
|
// 20
|
||||||
|
backupReg0i = R1i.x;
|
||||||
|
backupReg1i = R0i.y;
|
||||||
|
R1i.x = floatBitsToInt(intBitsToFloat(R4i.x) + intBitsToFloat(PV1i.x));
|
||||||
|
R0i.y = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.y));
|
||||||
|
R0i.z = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(PV1i.z));
|
||||||
|
R3i.w = ((backupReg0i == 0)?(R126i.z):(PV1i.w));
|
||||||
|
R4i.y = floatBitsToInt(intBitsToFloat(backupReg1i) * intBitsToFloat(PS1i));
|
||||||
|
PS0i = R4i.y;
|
||||||
|
R5i.y = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R3i.zw)).x);
|
||||||
|
// 0
|
||||||
|
backupReg0i = R0i.y;
|
||||||
|
backupReg0i = R0i.y;
|
||||||
|
backupReg1i = R0i.z;
|
||||||
|
backupReg1i = R0i.z;
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R1i.x),intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),-0.0),vec4(intBitsToFloat(R1i.x),intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),0.0)));
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R127i.y = ((intBitsToFloat(R3i.z) > intBitsToFloat(uf_remappedPS[7].x))?int(0xFFFFFFFF):int(0x0));
|
||||||
|
PS0i = R127i.y;
|
||||||
|
// 1
|
||||||
|
R125i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R1i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(R0i.x),intBitsToFloat(R2i.y),intBitsToFloat(R1i.z),0.0)));
|
||||||
|
R125i.x = clampFI32(R125i.x);
|
||||||
|
PV1i.x = R125i.x;
|
||||||
|
PV1i.y = R125i.x;
|
||||||
|
PV1i.z = R125i.x;
|
||||||
|
PV1i.w = R125i.x;
|
||||||
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
|
||||||
|
PS1i = floatBitsToInt(tempResultf);
|
||||||
|
// 2
|
||||||
|
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.x = R127i.x;
|
||||||
|
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.y), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.y = R125i.y;
|
||||||
|
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(PS1i)));
|
||||||
|
PV0i.z = R126i.z;
|
||||||
|
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R3i.x)) + intBitsToFloat(R2i.x)));
|
||||||
|
PV0i.w = R123i.w;
|
||||||
|
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.y), intBitsToFloat(R2i.z)));
|
||||||
|
PS0i = R127i.w;
|
||||||
|
// 3
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R0i.w),intBitsToFloat(R1i.w),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
|
||||||
|
tempi.x = clampFI32(tempi.x);
|
||||||
|
PV1i.x = tempi.x;
|
||||||
|
PV1i.y = tempi.x;
|
||||||
|
PV1i.z = tempi.x;
|
||||||
|
PV1i.w = tempi.x;
|
||||||
|
R126i.w = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
|
||||||
|
PS1i = R126i.w;
|
||||||
|
// 4
|
||||||
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R1i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R125i.y),intBitsToFloat(R126i.z),0.0)));
|
||||||
|
tempi.x = clampFI32(tempi.x);
|
||||||
|
PV0i.x = tempi.x;
|
||||||
|
PV0i.y = tempi.x;
|
||||||
|
PV0i.z = tempi.x;
|
||||||
|
PV0i.w = tempi.x;
|
||||||
|
R125i.y = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
|
||||||
|
PS0i = R125i.y;
|
||||||
|
// 5
|
||||||
|
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(PS0i)));
|
||||||
|
PV1i.x = R127i.x;
|
||||||
|
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(R4i.y)));
|
||||||
|
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.y), intBitsToFloat(R126i.w)));
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
|
||||||
|
PS1i = floatBitsToInt(max(-(intBitsToFloat(R5i.z)), 0.0));
|
||||||
|
// 6
|
||||||
|
R126i.x = ((R127i.y == 0)?(R5i.y):(R127i.w));
|
||||||
|
PV0i.x = R126i.x;
|
||||||
|
R127i.y = floatBitsToInt(min(intBitsToFloat(PS1i), 1.0));
|
||||||
|
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),intBitsToFloat(PV1i.w)) + 1.0));
|
||||||
|
PV0i.z = R123i.z;
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PV1i.x)));
|
||||||
|
// 7
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.z)));
|
||||||
|
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(R6i.y)));
|
||||||
|
PV1i.y = R124i.y;
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PV0i.w)));
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].x), intBitsToFloat(PV0i.x)));
|
||||||
|
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].y), intBitsToFloat(PV0i.x)));
|
||||||
|
PS1i = R127i.x;
|
||||||
|
// 8
|
||||||
|
PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.y)) + 1.0);
|
||||||
|
R125i.y = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x3f75c28f) + intBitsToFloat(0x3d23d70a)));
|
||||||
|
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x3ea2f983));
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].z), intBitsToFloat(R126i.x)));
|
||||||
|
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.x));
|
||||||
|
// 9
|
||||||
|
backupReg0i = R127i.x;
|
||||||
|
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(PV0i.x)) + intBitsToFloat(R124i.y)));
|
||||||
|
PV1i.y = floatBitsToInt(intBitsToFloat(backupReg0i) * intBitsToFloat(0x3ea2f983));
|
||||||
|
PV1i.z = floatBitsToInt(intBitsToFloat(R6i.z) * intBitsToFloat(PS0i));
|
||||||
|
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3ea2f983));
|
||||||
|
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(PV0i.z)));
|
||||||
|
// 10
|
||||||
|
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R125i.y)));
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(PV1i.w)));
|
||||||
|
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(PV1i.y)));
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(PS1i)));
|
||||||
|
// 11
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(PV0i.z)));
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(PV0i.y)));
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(PV0i.x)));
|
||||||
|
R8i.x = floatBitsToInt(min(intBitsToFloat(PV0i.w), intBitsToFloat(0x42000000)));
|
||||||
|
PS1i = R8i.x;
|
||||||
|
// 12
|
||||||
|
R8i.y = floatBitsToInt(min(intBitsToFloat(PV1i.x), intBitsToFloat(0x42000000)));
|
||||||
|
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.w) * 0.25);
|
||||||
|
R8i.z = floatBitsToInt(min(intBitsToFloat(PV1i.z), intBitsToFloat(0x42000000)));
|
||||||
|
PS0i = R8i.z;
|
||||||
|
// 13
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(PV0i.z)));
|
||||||
|
// 14
|
||||||
|
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.w), intBitsToFloat(PV1i.y)));
|
||||||
|
// 15
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PV0i.x)));
|
||||||
|
// 16
|
||||||
|
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].z), intBitsToFloat(PV1i.w)));
|
||||||
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].y), intBitsToFloat(PV1i.w)));
|
||||||
|
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].x), intBitsToFloat(PV1i.w)));
|
||||||
|
// 17
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.z), intBitsToFloat(PV0i.x)));
|
||||||
|
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.z), intBitsToFloat(PV0i.y)));
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.z), intBitsToFloat(PV0i.z)));
|
||||||
|
// 18
|
||||||
|
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PV1i.w)));
|
||||||
|
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PV1i.y)));
|
||||||
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PV1i.z)));
|
||||||
|
// 19
|
||||||
|
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(PV0i.w)));
|
||||||
|
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(PV0i.x)));
|
||||||
|
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(PV0i.z)));
|
||||||
|
// 20
|
||||||
|
R7i.x = floatBitsToInt(min(intBitsToFloat(PV1i.y), intBitsToFloat(0x42000000)));
|
||||||
|
R7i.y = floatBitsToInt(min(intBitsToFloat(PV1i.x), intBitsToFloat(0x42000000)));
|
||||||
|
R7i.z = floatBitsToInt(min(intBitsToFloat(PV1i.w), intBitsToFloat(0x42000000)));
|
||||||
|
// 21
|
||||||
|
R0i.xyz = ivec3(R8i.x,R8i.y,R8i.z);
|
||||||
|
R0i.w = R8i.w;
|
||||||
|
// 22
|
||||||
|
R1i.xyz = ivec3(R7i.x,R7i.y,R7i.z);
|
||||||
|
R1i.w = R7i.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
passPixelColor1 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
|
||||||
|
colhsv = rgb2hsv(passPixelColor1.rgb);
|
||||||
|
passPixelColor1.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor1.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,119 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader f62be0d03546ec39
|
||||||
|
// Guardian scout fire 1
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[2];
|
||||||
|
uniform float uf_alphaTestRef;
|
||||||
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x20fd4000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 1 1 0 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 0 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem3;
|
||||||
|
layout(location = 3) in vec4 passParameterSem4;
|
||||||
|
layout(location = 4) in vec4 passParameterSem8;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
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 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem3;
|
||||||
|
R3f = passParameterSem4;
|
||||||
|
R4f = passParameterSem8;
|
||||||
|
R4f.xyzw = (texture(textureUnitPS0, R4f.xy).xyzw);
|
||||||
|
// 0
|
||||||
|
backupReg0f = R0f.x;
|
||||||
|
backupReg1f = R0f.z;
|
||||||
|
R0f.x = R0f.y + -(R1f.y);
|
||||||
|
R127f.y = backupReg0f + -(R1f.x);
|
||||||
|
PV0f.z = mul_nonIEEE(R0f.w, R4f.w);
|
||||||
|
PV0f.w = backupReg1f + -(R1f.z);
|
||||||
|
PS0f = 1.0 / R2f.w;
|
||||||
|
// 1
|
||||||
|
PV1f.x = R2f.z * PS0f;
|
||||||
|
R0f.y = mul_nonIEEE(R1f.w, PV0f.z);
|
||||||
|
R0f.y = clamp(R0f.y, 0.0, 1.0);
|
||||||
|
R5f.z = (mul_nonIEEE(PV0f.w,R4f.z) + R1f.z);
|
||||||
|
PS1f = 1.0 / R2f.w;
|
||||||
|
// 2
|
||||||
|
backupReg0f = R2f.x;
|
||||||
|
backupReg1f = R2f.y;
|
||||||
|
R2f.x = mul_nonIEEE(backupReg0f, PS1f);
|
||||||
|
R2f.y = mul_nonIEEE(backupReg1f, PS1f);
|
||||||
|
R2f.z = (mul_nonIEEE(PV1f.x,intBitsToFloat(uf_remappedPS[0].w)) + -(intBitsToFloat(uf_remappedPS[0].y)));
|
||||||
|
R5f.x = (mul_nonIEEE(R127f.y,R4f.x) + R1f.x);
|
||||||
|
PS0f = R5f.x;
|
||||||
|
R2f.y = (texture(textureUnitPS4, R2f.xy).x);
|
||||||
|
// 0
|
||||||
|
R127f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R2f.y) + intBitsToFloat(uf_remappedPS[0].x));
|
||||||
|
R5f.y = (mul_nonIEEE(R0f.x,R4f.y) + R1f.y);
|
||||||
|
PS0f = 1.0 / R2f.z;
|
||||||
|
// 1
|
||||||
|
PV1f.w = -(intBitsToFloat(uf_remappedPS[0].z)) * PS0f;
|
||||||
|
R127f.z = 1.0 / intBitsToFloat(uf_remappedPS[1].y);
|
||||||
|
PS1f = R127f.z;
|
||||||
|
// 2
|
||||||
|
PV0f.w = -(PV1f.w) + R127f.x;
|
||||||
|
// 3
|
||||||
|
PV1f.y = PV0f.w * R127f.z;
|
||||||
|
PV1f.y = clamp(PV1f.y, 0.0, 1.0);
|
||||||
|
// 4
|
||||||
|
PV0f.x = mul_nonIEEE(R0f.y, PV1f.y);
|
||||||
|
// 5
|
||||||
|
R5f.w = mul_nonIEEE(R3f.x, PV0f.x);
|
||||||
|
// export
|
||||||
|
if( ((vec4(R5f.x, R5f.y, R5f.z, R5f.w)).a > uf_alphaTestRef) == false) discard;
|
||||||
|
passPixelColor0 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
|
||||||
|
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor0.a *= ALPHA_FACTOR;
|
||||||
|
}
|
@ -0,0 +1,184 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
// shader fb135efcb4540fb1
|
||||||
|
// Shrine - wall decoration
|
||||||
|
// Glow Lights Color Mod
|
||||||
|
// Credit for hsv functions http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
|
||||||
|
|
||||||
|
#define HUE_ROTATION 134 //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://dba.med.sc.edu/price/irf/Adobe_tg/models/images/hsl_top.JPG
|
||||||
|
#define SATURATION_FACTOR 0.9 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
|
||||||
|
#define VALUE_FACTOR 0.65 //same as above; applies to Value
|
||||||
|
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
|
||||||
|
|
||||||
|
const float hueRotation = HUE_ROTATION / 360.0;
|
||||||
|
uniform ivec4 uf_remappedPS[3];
|
||||||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xb80c8000 res 1024x1024x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xb815b000 res 512x512x1 dim 1 tm: 4 format 0031 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xb814a000 res 256x256x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xb814a000 res 256x256x1 dim 1 tm: 4 format 0035 compSel: 0 1 1 1 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 0 0 2 border: 0
|
||||||
|
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xb7ab8000 res 1936x1024x1 dim 1 tm: 4 format 0034 compSel: 0 4 4 4 mipView: 0x0 (num 0xb) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 0
|
||||||
|
layout(location = 0) in vec4 passParameterSem0;
|
||||||
|
layout(location = 1) in vec4 passParameterSem1;
|
||||||
|
layout(location = 2) in vec4 passParameterSem7;
|
||||||
|
layout(location = 3) in vec4 passParameterSem3;
|
||||||
|
layout(location = 4) in vec4 passParameterSem4;
|
||||||
|
layout(location = 5) in vec4 passParameterSem5;
|
||||||
|
layout(location = 0) out vec4 passPixelColor0;
|
||||||
|
layout(location = 1) out vec4 passPixelColor1;
|
||||||
|
layout(location = 3) out vec4 passPixelColor3;
|
||||||
|
layout(location = 5) out vec4 passPixelColor5;
|
||||||
|
uniform vec2 uf_fragCoordScale;
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||||||
|
vec3 rgb2hsv(vec3 c) {
|
||||||
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
|
}
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec4 R0f = vec4(0.0);
|
||||||
|
vec4 R1f = vec4(0.0);
|
||||||
|
vec4 R2f = vec4(0.0);
|
||||||
|
vec4 R3f = vec4(0.0);
|
||||||
|
vec4 R4f = vec4(0.0);
|
||||||
|
vec4 R5f = vec4(0.0);
|
||||||
|
vec4 R6f = vec4(0.0);
|
||||||
|
vec4 R7f = vec4(0.0);
|
||||||
|
vec4 R123f = vec4(0.0);
|
||||||
|
vec4 R126f = vec4(0.0);
|
||||||
|
vec4 R127f = vec4(0.0);
|
||||||
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||||
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
||||||
|
float PS0f = 0.0, PS1f = 0.0;
|
||||||
|
vec4 tempf = vec4(0.0);
|
||||||
|
float tempResultf;
|
||||||
|
int tempResulti;
|
||||||
|
ivec4 ARi = ivec4(0);
|
||||||
|
bool predResult = true;
|
||||||
|
vec3 cubeMapSTM;
|
||||||
|
int cubeMapFaceId;
|
||||||
|
R0f = passParameterSem0;
|
||||||
|
R1f = passParameterSem1;
|
||||||
|
R2f = passParameterSem7;
|
||||||
|
R3f = passParameterSem3;
|
||||||
|
R4f = passParameterSem4;
|
||||||
|
R5f = passParameterSem5;
|
||||||
|
R6f.xyz = (texture(textureUnitPS4, R0f.xy).xyz);
|
||||||
|
R0f.w = (texture(textureUnitPS5, R0f.xy).x);
|
||||||
|
R2f.y = (texture(textureUnitPS7, R2f.xy).x);
|
||||||
|
R1f.x = (texture(textureUnitPS6, R1f.xy).w);
|
||||||
|
R0f.xyz = (texture(textureUnitPS3, R0f.xy).xyz);
|
||||||
|
// 0
|
||||||
|
PV0f.x = mul_nonIEEE(R3f.y, R4f.z);
|
||||||
|
R127f.y = (R6f.x * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PV0f.y = R127f.y;
|
||||||
|
PV0f.z = mul_nonIEEE(R3f.x, R4f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(R3f.z, R4f.x);
|
||||||
|
R127f.x = (R6f.y * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204));
|
||||||
|
PS0f = R127f.x;
|
||||||
|
// 1
|
||||||
|
R123f.x = (mul_nonIEEE(-(R4f.z),R3f.x) + PV0f.w);
|
||||||
|
PV1f.x = R123f.x;
|
||||||
|
R123f.y = (mul_nonIEEE(-(R4f.y),R3f.z) + PV0f.x);
|
||||||
|
PV1f.y = R123f.y;
|
||||||
|
R123f.z = (mul_nonIEEE(-(R4f.x),R3f.y) + PV0f.z);
|
||||||
|
PV1f.z = R123f.z;
|
||||||
|
PV1f.w = mul_nonIEEE(PV0f.y, PV0f.y);
|
||||||
|
PS1f = mul_nonIEEE(R4f.w, PS0f);
|
||||||
|
// 2
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
PV0f.x = mul_nonIEEE(PV1f.y, PS1f);
|
||||||
|
PV0f.y = mul_nonIEEE(PV1f.x, PS1f);
|
||||||
|
R123f.z = (mul_nonIEEE(R127f.x,R127f.x) + PV1f.w);
|
||||||
|
R123f.z = clamp(R123f.z, 0.0, 1.0);
|
||||||
|
PV0f.z = R123f.z;
|
||||||
|
PV0f.w = mul_nonIEEE(PV1f.z, PS1f);
|
||||||
|
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), backupReg0f);
|
||||||
|
PS0f = R127f.z;
|
||||||
|
// 3
|
||||||
|
R127f.x = (mul_nonIEEE(R4f.z,R127f.y) + PV0f.w)/2.0;
|
||||||
|
PV1f.y = -(PV0f.z) + 1.0;
|
||||||
|
R126f.z = (mul_nonIEEE(R4f.y,R127f.y) + PV0f.y)/2.0;
|
||||||
|
R127f.w = (mul_nonIEEE(R4f.x,R127f.y) + PV0f.x)/2.0;
|
||||||
|
R127f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.w);
|
||||||
|
PS1f = R127f.y;
|
||||||
|
// 4
|
||||||
|
backupReg0f = R0f.w;
|
||||||
|
R126f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.z);
|
||||||
|
R126f.y = R6f.z * intBitsToFloat(0x427f0000);
|
||||||
|
R127f.z = mul_nonIEEE(R5f.x, R2f.y);
|
||||||
|
PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z), backupReg0f);
|
||||||
|
PS0f = sqrt(PV1f.y);
|
||||||
|
PS0f /= 2.0;
|
||||||
|
// 5
|
||||||
|
backupReg0f = R127f.x;
|
||||||
|
backupReg1f = R126f.z;
|
||||||
|
R127f.x = (mul_nonIEEE(R3f.x,PS0f) + R127f.w);
|
||||||
|
PV1f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), R127f.y);
|
||||||
|
R126f.z = (mul_nonIEEE(R3f.z,PS0f) + backupReg0f);
|
||||||
|
R127f.w = (mul_nonIEEE(R3f.y,PS0f) + backupReg1f);
|
||||||
|
PS1f = mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x), PV0f.w);
|
||||||
|
// 6
|
||||||
|
backupReg0f = R1f.x;
|
||||||
|
backupReg1f = R126f.x;
|
||||||
|
R126f.x = floor(R126f.y);
|
||||||
|
R126f.x *= 4.0;
|
||||||
|
R1f.y = mul_nonIEEE(R1f.x, PV1f.y);
|
||||||
|
R1f.z = mul_nonIEEE(R1f.x, PS1f);
|
||||||
|
R2f.w = 1.0;
|
||||||
|
R1f.x = mul_nonIEEE(backupReg0f, backupReg1f);
|
||||||
|
PS0f = R1f.x;
|
||||||
|
// 7
|
||||||
|
R3f.x = mul_nonIEEE(R0f.x, R127f.z);
|
||||||
|
R3f.y = mul_nonIEEE(R0f.y, R127f.z);
|
||||||
|
R3f.z = mul_nonIEEE(R0f.z, R127f.z);
|
||||||
|
R1f.w = 1.0;
|
||||||
|
R2f.x = intBitsToFloat(0x3c808081);
|
||||||
|
PS1f = R2f.x;
|
||||||
|
// 8
|
||||||
|
R0f.x = R127f.x + 0.5;
|
||||||
|
R2f.y = intBitsToFloat(uf_remappedPS[2].z);
|
||||||
|
R0f.z = R126f.z + 0.5;
|
||||||
|
R3f.w = intBitsToFloat(0x3b808081);
|
||||||
|
R0f.y = R127f.w + 0.5;
|
||||||
|
PS0f = R0f.y;
|
||||||
|
// 9
|
||||||
|
R0f.w = (R126f.x * intBitsToFloat(0x3b808081) + intBitsToFloat(0x3b808081));
|
||||||
|
// 10
|
||||||
|
R7f.xyz = vec3(R1f.x,R1f.y,R1f.z);
|
||||||
|
R7f.w = R1f.w;
|
||||||
|
// 11
|
||||||
|
R6f.xyz = vec3(R0f.x,R0f.y,R0f.z);
|
||||||
|
R6f.w = R0f.w;
|
||||||
|
// 12
|
||||||
|
R5f.xyz = vec3(R3f.x,R3f.y,R3f.z);
|
||||||
|
R5f.w = R3f.w;
|
||||||
|
// 13
|
||||||
|
R4f.xyz = vec3(R2f.x,R2f.y,R2f.z);
|
||||||
|
R4f.w = R2f.w;
|
||||||
|
// export
|
||||||
|
passPixelColor0 = vec4(R4f.x, R4f.y, R4f.z, R4f.w);
|
||||||
|
passPixelColor1 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
|
||||||
|
passPixelColor3 = vec4(R6f.x, R6f.y, R6f.z, R6f.w);
|
||||||
|
passPixelColor5 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
|
||||||
|
vec3 colhsv = rgb2hsv(passPixelColor5.rgb);
|
||||||
|
passPixelColor5.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
|
||||||
|
passPixelColor5.a *= ALPHA_FACTOR;
|
||||||
|
}
|
22
Modifications/BreathOfTheWild_GlowLightsColorMod/rules.txt
Normal file
22
Modifications/BreathOfTheWild_GlowLightsColorMod/rules.txt
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
[Definition]
|
||||||
|
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
|
||||||
|
name = "The Legend of Zelda: Breath of the Wild - Glow Lights Color Mod"
|
||||||
|
version = 2
|
||||||
|
|
||||||
|
# This pack can be used to change the color of (most) glowing objects in the game, including the Sheikah Towers, Shrines (inside and outside), bombs, and others.
|
||||||
|
# The pack is designed to take advantage of the duality of the main colors. It is intended to be customizable.
|
||||||
|
# On each and every shader you will find values you can adjust. My suggestion is to use any tool that can search and replace in multiple files and use the same parameters in all files.
|
||||||
|
# Be aware that some shaders affect both the "On" and the "Off" color of some objects (ex: the open/closed chests in shrines)
|
||||||
|
# Also be aware that this pack changes the color of most lights as well, including orange lights that are not affiliated with the "Off" concept. This is unintended, but I can't do anything about it.
|
||||||
|
# The default configuration uses a red/green combination of colors.
|
||||||
|
# Here are some other example values for HUE_ROTATION, with the respective result
|
||||||
|
# 0 blue/orange
|
||||||
|
# 60 pink/lime
|
||||||
|
# 135 red/green
|
||||||
|
# 200 yellow/cyan
|
||||||
|
# 270 green/magenta
|
||||||
|
# 330 cyan/pink
|
||||||
|
#
|
||||||
|
# Shaders dumped from Cemu 1.11.0b and BotW 1.3.1
|
||||||
|
# Pack made by Kiri
|
||||||
|
# Have fun with it
|
Loading…
Reference in New Issue
Block a user