mirror of
https://github.com/weihuoya/citra.git
synced 2026-01-25 04:18:23 +00:00
fx
This commit is contained in:
18363
cache/0004000000053700.shader
vendored
Normal file
18363
cache/0004000000053700.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/0004000000053700.shader.meta
vendored
Normal file
4
cache/0004000000053700.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 94
|
||||
reference: 101
|
||||
program: 73
|
||||
2054
cache/000400000005DE00.shader
vendored
Normal file
2054
cache/000400000005DE00.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/000400000005DE00.shader.meta
vendored
Normal file
4
cache/000400000005DE00.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 14
|
||||
reference: 21
|
||||
program: 14
|
||||
542
cache/000400000008FE00.shader
vendored
Normal file
542
cache/000400000008FE00.shader
vendored
Normal file
@@ -0,0 +1,542 @@
|
||||
// shader: 8DD9, 6ABDA25F3FF910CD
|
||||
|
||||
layout(triangles) in;
|
||||
layout(triangle_strip, max_vertices = 3) out;
|
||||
|
||||
out vec4 primary_color;
|
||||
out vec2 texcoord0;
|
||||
out vec2 texcoord1;
|
||||
out vec2 texcoord2;
|
||||
out float texcoord0_w;
|
||||
out vec4 normquat;
|
||||
out vec3 view;
|
||||
|
||||
#define NUM_TEV_STAGES 6
|
||||
layout (std140) uniform shader_data {
|
||||
int alphatest_ref;
|
||||
float depth_scale;
|
||||
float depth_offset;
|
||||
float shadow_bias_constant;
|
||||
float shadow_bias_linear;
|
||||
int scissor_x1;
|
||||
int scissor_y1;
|
||||
int scissor_x2;
|
||||
int scissor_y2;
|
||||
int fog_lut_offset;
|
||||
int proctex_noise_lut_offset;
|
||||
int proctex_color_map_offset;
|
||||
int proctex_alpha_map_offset;
|
||||
int proctex_lut_offset;
|
||||
int proctex_diff_lut_offset;
|
||||
float proctex_bias;
|
||||
vec3 fog_color;
|
||||
vec2 proctex_noise_f;
|
||||
vec2 proctex_noise_a;
|
||||
vec2 proctex_noise_p;
|
||||
vec4 const_color[NUM_TEV_STAGES];
|
||||
vec4 tev_combiner_buffer_color;
|
||||
vec4 clip_coef;
|
||||
};
|
||||
|
||||
in vec4 vs_out_attr0[];
|
||||
in vec4 vs_out_attr1[];
|
||||
in vec4 vs_out_attr2[];
|
||||
in vec4 vs_out_attr3[];
|
||||
struct Vertex {
|
||||
vec4 attributes[4];
|
||||
};
|
||||
|
||||
vec4 GetVertexQuaternion(Vertex vtx) {
|
||||
return vec4(vtx.attributes[2].x, vtx.attributes[2].y, vtx.attributes[2].z, vtx.attributes[2].w);
|
||||
}
|
||||
|
||||
void EmitVtx(Vertex vtx, bool quats_opposite) {
|
||||
vec4 vtx_pos = vec4(vtx.attributes[0].x, vtx.attributes[0].y, vtx.attributes[0].z, vtx.attributes[0].w);
|
||||
gl_Position = vtx_pos;
|
||||
#if !defined(CITRA_GLES) || defined(GL_EXT_clip_cull_distance)
|
||||
gl_ClipDistance[0] = -vtx_pos.z;
|
||||
gl_ClipDistance[1] = dot(clip_coef, vtx_pos);
|
||||
#endif // !defined(CITRA_GLES) || defined(GL_EXT_clip_cull_distance)
|
||||
|
||||
vec4 vtx_quat = GetVertexQuaternion(vtx);
|
||||
normquat = mix(vtx_quat, -vtx_quat, bvec4(quats_opposite));
|
||||
|
||||
vec4 vtx_color = vec4(vtx.attributes[1].x, vtx.attributes[1].y, vtx.attributes[1].z, vtx.attributes[1].w);
|
||||
primary_color = min(abs(vtx_color), vec4(1.0));
|
||||
|
||||
texcoord0 = vec2(0.0, 0.0);
|
||||
texcoord1 = vec2(0.0, 0.0);
|
||||
|
||||
texcoord0_w = 0.0;
|
||||
view = vec3(vtx.attributes[3].x, vtx.attributes[3].y, vtx.attributes[3].z);
|
||||
texcoord2 = vec2(0.0, 0.0);
|
||||
|
||||
EmitVertex();
|
||||
}
|
||||
|
||||
bool AreQuaternionsOpposite(vec4 qa, vec4 qb) {
|
||||
return (dot(qa, qb) < 0.0);
|
||||
}
|
||||
|
||||
void EmitPrim(Vertex vtx0, Vertex vtx1, Vertex vtx2) {
|
||||
EmitVtx(vtx0, false);
|
||||
EmitVtx(vtx1, AreQuaternionsOpposite(GetVertexQuaternion(vtx0), GetVertexQuaternion(vtx1)));
|
||||
EmitVtx(vtx2, AreQuaternionsOpposite(GetVertexQuaternion(vtx0), GetVertexQuaternion(vtx2)));
|
||||
EndPrimitive();
|
||||
}
|
||||
|
||||
void main() {
|
||||
Vertex prim_buffer[3];
|
||||
prim_buffer[0].attributes = vec4[4](vs_out_attr0[0], vs_out_attr1[0], vs_out_attr2[0], vs_out_attr3[0]);
|
||||
prim_buffer[1].attributes = vec4[4](vs_out_attr0[1], vs_out_attr1[1], vs_out_attr2[1], vs_out_attr3[1]);
|
||||
prim_buffer[2].attributes = vec4[4](vs_out_attr0[2], vs_out_attr1[2], vs_out_attr2[2], vs_out_attr3[2]);
|
||||
EmitPrim(prim_buffer[0], prim_buffer[1], prim_buffer[2]);
|
||||
}
|
||||
// reference: E57938FA9E46D0AE, 6ABDA25F3FF910CD
|
||||
// shader: 8B31, F9543D43C2B3E096
|
||||
|
||||
#define mul_s(x, y) (x * y)
|
||||
#define fma_s(x, y, z) fma(x, y, z)
|
||||
#define rcp_s(x) (1.0 / x)
|
||||
#define rsq_s(x) inversesqrt(x)
|
||||
#define dot_s(x, y) dot(x, y)
|
||||
#define dot_3(x, y) dot(x, y)
|
||||
|
||||
struct pica_uniforms {
|
||||
bool b[16];
|
||||
uvec4 i[4];
|
||||
vec4 f[96];
|
||||
};
|
||||
|
||||
bool exec_shader();
|
||||
|
||||
#define uniforms vs_uniforms
|
||||
layout (std140) uniform vs_config {
|
||||
pica_uniforms uniforms;
|
||||
};
|
||||
layout(location = 0) in vec4 vs_in_reg0;
|
||||
layout(location = 2) in vec4 vs_in_reg2;
|
||||
layout(location = 4) in vec4 vs_in_reg4;
|
||||
|
||||
out vec4 vs_out_attr0;
|
||||
out vec4 vs_out_attr1;
|
||||
out vec4 vs_out_attr2;
|
||||
out vec4 vs_out_attr3;
|
||||
|
||||
void main() {
|
||||
vs_out_attr0 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vs_out_attr1 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vs_out_attr2 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vs_out_attr3 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
exec_shader();
|
||||
}
|
||||
bvec2 conditional_code = bvec2(false);
|
||||
ivec3 address_registers = ivec3(0);
|
||||
vec4 reg_tmp0 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp1 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp2 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp3 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp4 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp5 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp6 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp7 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp8 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp9 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp10 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp11 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp12 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp13 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp14 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp15 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
|
||||
bool sub_0();
|
||||
bool sub_1();
|
||||
bool sub_2();
|
||||
|
||||
bool exec_shader() {
|
||||
sub_0();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool sub_0() {
|
||||
reg_tmp10.xyz = (vs_in_reg0.xyzz).xyz;
|
||||
reg_tmp10.w = (uniforms.f[92].yyyy).w;
|
||||
conditional_code = equal(uniforms.f[4].xx, reg_tmp10.ww);
|
||||
if (!conditional_code.x) {
|
||||
sub_1();
|
||||
} else {
|
||||
sub_2();
|
||||
}
|
||||
vs_out_attr0.x = dot_s(uniforms.f[0], reg_tmp10);
|
||||
vs_out_attr0.y = dot_s(uniforms.f[1], reg_tmp10);
|
||||
vs_out_attr0.z = dot_s(uniforms.f[2], reg_tmp10);
|
||||
vs_out_attr0.w = dot_s(uniforms.f[3], reg_tmp10);
|
||||
vs_out_attr1 = vs_in_reg2;
|
||||
vs_out_attr3 = -reg_tmp10;
|
||||
vs_out_attr2 = uniforms.f[92].xxxx;
|
||||
return true;
|
||||
}
|
||||
bool sub_1() {
|
||||
reg_tmp10.x = (reg_tmp10.xxxx + vs_in_reg4.xxxx).x;
|
||||
return false;
|
||||
}
|
||||
bool sub_2() {
|
||||
reg_tmp10.x = (reg_tmp10.xxxx + -vs_in_reg4.xxxx).x;
|
||||
return false;
|
||||
}
|
||||
// reference: BFAF50543B47F256, F9543D43C2B3E096
|
||||
// shader: 8B30, 123AEB0EDF90A3FE
|
||||
in vec4 primary_color;
|
||||
in vec2 texcoord0;
|
||||
in vec2 texcoord1;
|
||||
in vec2 texcoord2;
|
||||
in float texcoord0_w;
|
||||
in vec4 normquat;
|
||||
in vec3 view;
|
||||
|
||||
#ifndef CITRA_GLES
|
||||
in vec4 gl_FragCoord;
|
||||
#endif // CITRA_GLES
|
||||
out vec4 color;
|
||||
|
||||
uniform sampler2D tex0;
|
||||
uniform sampler2D tex1;
|
||||
uniform sampler2D tex2;
|
||||
uniform samplerCube tex_cube;
|
||||
uniform samplerBuffer texture_buffer_lut_lf;
|
||||
uniform samplerBuffer texture_buffer_lut_rg;
|
||||
uniform samplerBuffer texture_buffer_lut_rgba;
|
||||
|
||||
#define NUM_TEV_STAGES 6
|
||||
layout (std140) uniform shader_data {
|
||||
int alphatest_ref;
|
||||
float depth_scale;
|
||||
float depth_offset;
|
||||
float shadow_bias_constant;
|
||||
float shadow_bias_linear;
|
||||
int scissor_x1;
|
||||
int scissor_y1;
|
||||
int scissor_x2;
|
||||
int scissor_y2;
|
||||
int fog_lut_offset;
|
||||
int proctex_noise_lut_offset;
|
||||
int proctex_color_map_offset;
|
||||
int proctex_alpha_map_offset;
|
||||
int proctex_lut_offset;
|
||||
int proctex_diff_lut_offset;
|
||||
float proctex_bias;
|
||||
vec3 fog_color;
|
||||
vec2 proctex_noise_f;
|
||||
vec2 proctex_noise_a;
|
||||
vec2 proctex_noise_p;
|
||||
vec4 const_color[NUM_TEV_STAGES];
|
||||
vec4 tev_combiner_buffer_color;
|
||||
vec4 clip_coef;
|
||||
};
|
||||
|
||||
#define NUM_LIGHTS 8
|
||||
#define NUM_LIGHTING_SAMPLERS 24
|
||||
struct LightSrc {
|
||||
vec3 specular_0;
|
||||
vec3 specular_1;
|
||||
vec3 diffuse;
|
||||
vec3 ambient;
|
||||
vec3 position;
|
||||
vec3 spot_direction;
|
||||
float dist_atten_bias;
|
||||
float dist_atten_scale;
|
||||
};
|
||||
layout (std140) uniform shader_light_data {
|
||||
ivec4 lighting_lut_offset[NUM_LIGHTING_SAMPLERS / 4];
|
||||
vec3 lighting_global_ambient;
|
||||
LightSrc light_src[NUM_LIGHTS];
|
||||
float lut_scale_d0;
|
||||
float lut_scale_d1;
|
||||
float lut_scale_sp;
|
||||
float lut_scale_fr;
|
||||
float lut_scale_rb;
|
||||
float lut_scale_rg;
|
||||
float lut_scale_rr;
|
||||
int shadow_texture_bias;
|
||||
};
|
||||
|
||||
// Rotate the vector v by the quaternion q
|
||||
vec3 quaternion_rotate(vec4 q, vec3 v) {
|
||||
return v + 2.0 * cross(q.xyz, cross(q.xyz, v) + q.w * v);
|
||||
}
|
||||
|
||||
float LookupLightingLUT(int lut_index, int index, float delta) {
|
||||
vec2 entry = texelFetch(texture_buffer_lut_lf, lighting_lut_offset[lut_index >> 2][lut_index & 3] + index).rg;
|
||||
return entry.r + entry.g * delta;
|
||||
}
|
||||
|
||||
float LookupLightingLUTUnsigned(int lut_index, float pos) {
|
||||
int index = clamp(int(pos * 256.0), 0, 255);
|
||||
float delta = pos * 256.0 - float(index);
|
||||
return LookupLightingLUT(lut_index, index, delta);
|
||||
}
|
||||
|
||||
float LookupLightingLUTSigned(int lut_index, float pos) {
|
||||
int index = clamp(int(pos * 128.0), -128, 127);
|
||||
float delta = pos * 128.0 - float(index);
|
||||
if (index < 0) index += 256;
|
||||
return LookupLightingLUT(lut_index, index, delta);
|
||||
}
|
||||
|
||||
float byteround(float x) {
|
||||
return round(x * 255.0) * (1.0 / 255.0);
|
||||
}
|
||||
|
||||
vec2 byteround(vec2 x) {
|
||||
return round(x * 255.0) * (1.0 / 255.0);
|
||||
}
|
||||
|
||||
vec3 byteround(vec3 x) {
|
||||
return round(x * 255.0) * (1.0 / 255.0);
|
||||
}
|
||||
|
||||
vec4 byteround(vec4 x) {
|
||||
return round(x * 255.0) * (1.0 / 255.0);
|
||||
}
|
||||
|
||||
float getLod(vec2 coord) {
|
||||
vec2 d = max(abs(dFdx(coord)), abs(dFdy(coord)));
|
||||
return log2(max(d.x, d.y));
|
||||
}
|
||||
|
||||
vec4 shadowTexture(vec2 uv, float w) {
|
||||
return vec4(1.0);
|
||||
}
|
||||
|
||||
vec4 shadowTextureCube(vec2 uv, float w) {
|
||||
return vec4(1.0);
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec4 rounded_primary_color = byteround(primary_color);
|
||||
vec4 primary_fragment_color = vec4(0.0);
|
||||
vec4 secondary_fragment_color = vec4(0.0);
|
||||
if (!(gl_FragCoord.x >= float(scissor_x1) && gl_FragCoord.y >= float(scissor_y1) && gl_FragCoord.x < float(scissor_x2) && gl_FragCoord.y < float(scissor_y2))) discard;
|
||||
float z_over_w = 2.0 * gl_FragCoord.z - 1.0;
|
||||
float depth = z_over_w * depth_scale + depth_offset;
|
||||
vec4 texcolor0 = textureLod(tex0, texcoord0, getLod(texcoord0 * vec2(textureSize(tex0, 0))));
|
||||
vec4 combiner_buffer = vec4(0.0);
|
||||
vec4 next_combiner_buffer = tev_combiner_buffer_color;
|
||||
vec4 last_tex_env_out = vec4(0.0);
|
||||
vec3 color_output_0 = byteround(clamp((rounded_primary_color.rgb) * (texcolor0.rgb), vec3(0.0), vec3(1.0)));
|
||||
float alpha_output_0 = byteround(clamp((rounded_primary_color.a) * (texcolor0.a), 0.0, 1.0));
|
||||
last_tex_env_out = vec4(color_output_0, alpha_output_0);
|
||||
last_tex_env_out = clamp(last_tex_env_out, vec4(0.0), vec4(1.0));
|
||||
combiner_buffer = next_combiner_buffer;
|
||||
|
||||
combiner_buffer = next_combiner_buffer;
|
||||
|
||||
combiner_buffer = next_combiner_buffer;
|
||||
|
||||
combiner_buffer = next_combiner_buffer;
|
||||
|
||||
combiner_buffer = next_combiner_buffer;
|
||||
|
||||
combiner_buffer = next_combiner_buffer;
|
||||
|
||||
if (int(last_tex_env_out.a * 255.0) <= alphatest_ref) discard;
|
||||
gl_FragDepth = depth;
|
||||
color = byteround(last_tex_env_out);
|
||||
}
|
||||
// reference: CE312E683AC5214B, 123AEB0EDF90A3FE
|
||||
// program: F9543D43C2B3E096, 6ABDA25F3FF910CD, 123AEB0EDF90A3FE
|
||||
// shader: 8DD9, 24CFA9CD0C9C43C4
|
||||
|
||||
layout(triangles) in;
|
||||
layout(triangle_strip, max_vertices = 3) out;
|
||||
|
||||
out vec4 primary_color;
|
||||
out vec2 texcoord0;
|
||||
out vec2 texcoord1;
|
||||
out vec2 texcoord2;
|
||||
out float texcoord0_w;
|
||||
out vec4 normquat;
|
||||
out vec3 view;
|
||||
|
||||
#define NUM_TEV_STAGES 6
|
||||
layout (std140) uniform shader_data {
|
||||
int alphatest_ref;
|
||||
float depth_scale;
|
||||
float depth_offset;
|
||||
float shadow_bias_constant;
|
||||
float shadow_bias_linear;
|
||||
int scissor_x1;
|
||||
int scissor_y1;
|
||||
int scissor_x2;
|
||||
int scissor_y2;
|
||||
int fog_lut_offset;
|
||||
int proctex_noise_lut_offset;
|
||||
int proctex_color_map_offset;
|
||||
int proctex_alpha_map_offset;
|
||||
int proctex_lut_offset;
|
||||
int proctex_diff_lut_offset;
|
||||
float proctex_bias;
|
||||
vec3 fog_color;
|
||||
vec2 proctex_noise_f;
|
||||
vec2 proctex_noise_a;
|
||||
vec2 proctex_noise_p;
|
||||
vec4 const_color[NUM_TEV_STAGES];
|
||||
vec4 tev_combiner_buffer_color;
|
||||
vec4 clip_coef;
|
||||
};
|
||||
|
||||
in vec4 vs_out_attr0[];
|
||||
in vec4 vs_out_attr1[];
|
||||
in vec4 vs_out_attr2[];
|
||||
in vec4 vs_out_attr3[];
|
||||
in vec4 vs_out_attr4[];
|
||||
struct Vertex {
|
||||
vec4 attributes[5];
|
||||
};
|
||||
|
||||
vec4 GetVertexQuaternion(Vertex vtx) {
|
||||
return vec4(vtx.attributes[3].x, vtx.attributes[3].y, vtx.attributes[3].z, vtx.attributes[3].w);
|
||||
}
|
||||
|
||||
void EmitVtx(Vertex vtx, bool quats_opposite) {
|
||||
vec4 vtx_pos = vec4(vtx.attributes[0].x, vtx.attributes[0].y, vtx.attributes[0].z, vtx.attributes[0].w);
|
||||
gl_Position = vtx_pos;
|
||||
#if !defined(CITRA_GLES) || defined(GL_EXT_clip_cull_distance)
|
||||
gl_ClipDistance[0] = -vtx_pos.z;
|
||||
gl_ClipDistance[1] = dot(clip_coef, vtx_pos);
|
||||
#endif // !defined(CITRA_GLES) || defined(GL_EXT_clip_cull_distance)
|
||||
|
||||
vec4 vtx_quat = GetVertexQuaternion(vtx);
|
||||
normquat = mix(vtx_quat, -vtx_quat, bvec4(quats_opposite));
|
||||
|
||||
vec4 vtx_color = vec4(vtx.attributes[1].x, vtx.attributes[1].y, vtx.attributes[1].z, vtx.attributes[1].w);
|
||||
primary_color = min(abs(vtx_color), vec4(1.0));
|
||||
|
||||
texcoord0 = vec2(vtx.attributes[2].x, vtx.attributes[2].y);
|
||||
texcoord1 = vec2(0.0, 0.0);
|
||||
|
||||
texcoord0_w = 0.0;
|
||||
view = vec3(vtx.attributes[4].x, vtx.attributes[4].y, vtx.attributes[4].z);
|
||||
texcoord2 = vec2(0.0, 0.0);
|
||||
|
||||
EmitVertex();
|
||||
}
|
||||
|
||||
bool AreQuaternionsOpposite(vec4 qa, vec4 qb) {
|
||||
return (dot(qa, qb) < 0.0);
|
||||
}
|
||||
|
||||
void EmitPrim(Vertex vtx0, Vertex vtx1, Vertex vtx2) {
|
||||
EmitVtx(vtx0, false);
|
||||
EmitVtx(vtx1, AreQuaternionsOpposite(GetVertexQuaternion(vtx0), GetVertexQuaternion(vtx1)));
|
||||
EmitVtx(vtx2, AreQuaternionsOpposite(GetVertexQuaternion(vtx0), GetVertexQuaternion(vtx2)));
|
||||
EndPrimitive();
|
||||
}
|
||||
|
||||
void main() {
|
||||
Vertex prim_buffer[3];
|
||||
prim_buffer[0].attributes = vec4[5](vs_out_attr0[0], vs_out_attr1[0], vs_out_attr2[0], vs_out_attr3[0], vs_out_attr4[0]);
|
||||
prim_buffer[1].attributes = vec4[5](vs_out_attr0[1], vs_out_attr1[1], vs_out_attr2[1], vs_out_attr3[1], vs_out_attr4[1]);
|
||||
prim_buffer[2].attributes = vec4[5](vs_out_attr0[2], vs_out_attr1[2], vs_out_attr2[2], vs_out_attr3[2], vs_out_attr4[2]);
|
||||
EmitPrim(prim_buffer[0], prim_buffer[1], prim_buffer[2]);
|
||||
}
|
||||
// reference: 8D2B248358E40AB0, 24CFA9CD0C9C43C4
|
||||
// shader: 8B31, EC3BAFA855289E1F
|
||||
|
||||
#define mul_s(x, y) (x * y)
|
||||
#define fma_s(x, y, z) fma(x, y, z)
|
||||
#define rcp_s(x) (1.0 / x)
|
||||
#define rsq_s(x) inversesqrt(x)
|
||||
#define dot_s(x, y) dot(x, y)
|
||||
#define dot_3(x, y) dot(x, y)
|
||||
|
||||
struct pica_uniforms {
|
||||
bool b[16];
|
||||
uvec4 i[4];
|
||||
vec4 f[96];
|
||||
};
|
||||
|
||||
bool exec_shader();
|
||||
|
||||
#define uniforms vs_uniforms
|
||||
layout (std140) uniform vs_config {
|
||||
pica_uniforms uniforms;
|
||||
};
|
||||
layout(location = 0) in vec4 vs_in_reg0;
|
||||
layout(location = 1) in vec4 vs_in_reg1;
|
||||
layout(location = 2) in vec4 vs_in_reg2;
|
||||
layout(location = 4) in vec4 vs_in_reg4;
|
||||
|
||||
out vec4 vs_out_attr0;
|
||||
out vec4 vs_out_attr1;
|
||||
out vec4 vs_out_attr2;
|
||||
out vec4 vs_out_attr3;
|
||||
out vec4 vs_out_attr4;
|
||||
|
||||
void main() {
|
||||
vs_out_attr0 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vs_out_attr1 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vs_out_attr2 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vs_out_attr3 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vs_out_attr4 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
exec_shader();
|
||||
}
|
||||
bvec2 conditional_code = bvec2(false);
|
||||
ivec3 address_registers = ivec3(0);
|
||||
vec4 reg_tmp0 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp1 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp2 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp3 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp4 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp5 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp6 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp7 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp8 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp9 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp10 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp11 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp12 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp13 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp14 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
vec4 reg_tmp15 = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
|
||||
bool sub_0();
|
||||
bool sub_1();
|
||||
bool sub_2();
|
||||
|
||||
bool exec_shader() {
|
||||
sub_0();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool sub_0() {
|
||||
reg_tmp10.xyz = (vs_in_reg0.xyzz).xyz;
|
||||
reg_tmp10.w = (uniforms.f[92].yyyy).w;
|
||||
conditional_code = equal(uniforms.f[4].xx, reg_tmp10.ww);
|
||||
if (!conditional_code.x) {
|
||||
sub_1();
|
||||
} else {
|
||||
sub_2();
|
||||
}
|
||||
vs_out_attr0.x = dot_s(uniforms.f[0], reg_tmp10);
|
||||
vs_out_attr0.y = dot_s(uniforms.f[1], reg_tmp10);
|
||||
vs_out_attr0.z = dot_s(uniforms.f[2], reg_tmp10);
|
||||
vs_out_attr0.w = dot_s(uniforms.f[3], reg_tmp10);
|
||||
vs_out_attr1 = vs_in_reg2;
|
||||
vs_out_attr2 = vs_in_reg1.xyyy;
|
||||
vs_out_attr4 = -reg_tmp10;
|
||||
vs_out_attr3 = uniforms.f[92].xxxx;
|
||||
return true;
|
||||
}
|
||||
bool sub_1() {
|
||||
reg_tmp10.x = (reg_tmp10.xxxx + vs_in_reg4.xxxx).x;
|
||||
return false;
|
||||
}
|
||||
bool sub_2() {
|
||||
reg_tmp10.x = (reg_tmp10.xxxx + -vs_in_reg4.xxxx).x;
|
||||
return false;
|
||||
}
|
||||
// reference: 632F9952C2854885, EC3BAFA855289E1F
|
||||
// program: EC3BAFA855289E1F, 24CFA9CD0C9C43C4, 123AEB0EDF90A3FE
|
||||
// reference: 15A698DF3B47F256, F9543D43C2B3E096
|
||||
// reference: C92651D9C2854885, EC3BAFA855289E1F
|
||||
4
cache/000400000008FE00.shader.meta
vendored
Normal file
4
cache/000400000008FE00.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 5
|
||||
reference: 7
|
||||
program: 2
|
||||
21073
cache/0004000000090700.shader
vendored
Normal file
21073
cache/0004000000090700.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/0004000000090700.shader.meta
vendored
Normal file
4
cache/0004000000090700.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 101
|
||||
reference: 150
|
||||
program: 90
|
||||
4582
cache/00040000000B3500.shader
vendored
Normal file
4582
cache/00040000000B3500.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/00040000000B3500.shader.meta
vendored
Normal file
4
cache/00040000000B3500.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 35
|
||||
reference: 43
|
||||
program: 20
|
||||
2200
cache/00040000000DA000.shader
vendored
Normal file
2200
cache/00040000000DA000.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/00040000000DA000.shader.meta
vendored
Normal file
4
cache/00040000000DA000.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 15
|
||||
reference: 21
|
||||
program: 12
|
||||
10421
cache/00040000000F4F00.shader
vendored
Normal file
10421
cache/00040000000F4F00.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/00040000000F4F00.shader.meta
vendored
Normal file
4
cache/00040000000F4F00.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 52
|
||||
reference: 119
|
||||
program: 40
|
||||
1995
cache/00040000000F5600.shader
vendored
Normal file
1995
cache/00040000000F5600.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/00040000000F5600.shader.meta
vendored
Normal file
4
cache/00040000000F5600.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 15
|
||||
reference: 15
|
||||
program: 17
|
||||
5399
cache/0004000000127900.shader
vendored
Normal file
5399
cache/0004000000127900.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/0004000000127900.shader.meta
vendored
Normal file
4
cache/0004000000127900.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 27
|
||||
reference: 27
|
||||
program: 23
|
||||
17577
cache/0004000000131E00.shader
vendored
Normal file
17577
cache/0004000000131E00.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/0004000000131E00.shader.meta
vendored
Normal file
4
cache/0004000000131E00.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 101
|
||||
reference: 213
|
||||
program: 87
|
||||
2841
cache/0004000000158D00.shader
vendored
Normal file
2841
cache/0004000000158D00.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/0004000000158D00.shader.meta
vendored
Normal file
4
cache/0004000000158D00.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 19
|
||||
reference: 23
|
||||
program: 16
|
||||
8951
cache/000400000018A400.shader
vendored
Normal file
8951
cache/000400000018A400.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/000400000018A400.shader.meta
vendored
Normal file
4
cache/000400000018A400.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 46
|
||||
reference: 51
|
||||
program: 38
|
||||
17028
cache/00040000001A4800.shader
vendored
Normal file
17028
cache/00040000001A4800.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/00040000001A4800.shader.meta
vendored
Normal file
4
cache/00040000001A4800.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 79
|
||||
reference: 105
|
||||
program: 72
|
||||
3682
cache/000400000FAA5C00.shader
vendored
Normal file
3682
cache/000400000FAA5C00.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/000400000FAA5C00.shader.meta
vendored
Normal file
4
cache/000400000FAA5C00.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 24
|
||||
reference: 24
|
||||
program: 22
|
||||
21256
cache/0004001000021700.shader
vendored
Normal file
21256
cache/0004001000021700.shader
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
cache/0004001000021700.shader.meta
vendored
Normal file
4
cache/0004001000021700.shader.meta
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
version: 8
|
||||
shader: 114
|
||||
reference: 133
|
||||
program: 106
|
||||
@@ -4,6 +4,20 @@
|
||||
000400300000A102 = Home Menu
|
||||
000400300000A902 = Home Menu
|
||||
000400300000B102 = Home Menu
|
||||
0004000000090700 = 任天狗
|
||||
0004000000030B00 = 任天狗
|
||||
0004000000030C00 = 任天狗
|
||||
0004000000030D00 = 任天狗
|
||||
0004000000090800 = 任天狗
|
||||
0004000000031000 = 任天狗
|
||||
0004000000031100 = 任天狗
|
||||
0004000000031200 = 任天狗
|
||||
0004000000090900 = 任天狗
|
||||
0004000000031500 = 任天狗
|
||||
0004000000031600 = 任天狗
|
||||
0004000000031700 = 任天狗
|
||||
00040000001C1C00 = 超回转 寿司强袭者 寿司道
|
||||
0004000000196700 = 超回转 寿司强袭者 寿司道
|
||||
000400000012E000 = 僵尸梦游仙境DX
|
||||
0004000000167A00 = 僵尸梦游仙境DX
|
||||
00040000000F5600 = 僵尸梦游仙境DX
|
||||
@@ -72,6 +86,14 @@
|
||||
00040000001A6C00 = 第七龙神3 代号VFD
|
||||
0004000000039A00 = 卡片召唤师
|
||||
0004000000053700 = 终极兵团
|
||||
0004000000095800 = 新绘心教室
|
||||
0004000000095700 = 新绘心教室
|
||||
0004000000084F00 = 新绘心教室
|
||||
00040000000DA000 = 刺猬索尼克
|
||||
00040000000DB500 = 刺猬索尼克
|
||||
0004000000158D00 = 刺猬索尼克 2
|
||||
0004000000162700 = 刺猬索尼克 2
|
||||
0004000000048000 = 初音未来 未来计划
|
||||
0004000000148900 = 初音未来 未来计划DX
|
||||
0004000000148C00 = 初音未来 未来计划DX
|
||||
000400000014A800 = 初音未来 未来计划DX
|
||||
|
||||
Reference in New Issue
Block a user