mirror of
https://github.com/aap/librw.git
synced 2025-12-20 01:19:51 +00:00
fb alpha emulation for matfx
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
uniform sampler2D tex0;
|
||||
uniform sampler2D tex1;
|
||||
|
||||
uniform float u_coefficient;
|
||||
uniform vec2 u_fxparams;
|
||||
uniform vec4 u_colorClamp;
|
||||
|
||||
#define shininess (u_fxparams.x)
|
||||
#define disableFBA (u_fxparams.y)
|
||||
|
||||
in vec4 v_color;
|
||||
in vec2 v_tex0;
|
||||
in vec2 v_tex1;
|
||||
@@ -15,15 +18,16 @@ void
|
||||
main(void)
|
||||
{
|
||||
vec4 pass1 = v_color;
|
||||
vec4 envColor = pass1; // TODO: colorClamp
|
||||
vec4 envColor = max(pass1, u_colorClamp);
|
||||
pass1 *= texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));
|
||||
|
||||
vec4 pass2 = envColor*u_coefficient*texture(tex1, vec2(v_tex1.x, 1.0-v_tex1.y));
|
||||
vec4 pass2 = envColor*shininess*texture(tex1, vec2(v_tex1.x, 1.0-v_tex1.y));
|
||||
|
||||
pass1.rgb = mix(u_fogColor.rgb, pass1.rgb, v_fog);
|
||||
pass2.rgb = mix(vec3(0.0, 0.0, 0.0), pass2.rgb, v_fog);
|
||||
|
||||
color.rgb = pass1.rgb*pass1.a + pass2.rgb;
|
||||
float fba = max(pass1.a, disableFBA);
|
||||
color.rgb = pass1.rgb*pass1.a + pass2.rgb*fba;
|
||||
color.a = pass1.a;
|
||||
|
||||
DoAlphaTest(color.a);
|
||||
|
||||
@@ -34,9 +34,12 @@ const char *matfx_env_frag_src =
|
||||
"uniform sampler2D tex0;\n"
|
||||
"uniform sampler2D tex1;\n"
|
||||
|
||||
"uniform float u_coefficient;\n"
|
||||
"uniform vec2 u_fxparams;\n"
|
||||
"uniform vec4 u_colorClamp;\n"
|
||||
|
||||
"#define shininess (u_fxparams.x)\n"
|
||||
"#define disableFBA (u_fxparams.y)\n"
|
||||
|
||||
"in vec4 v_color;\n"
|
||||
"in vec2 v_tex0;\n"
|
||||
"in vec2 v_tex1;\n"
|
||||
@@ -48,15 +51,16 @@ const char *matfx_env_frag_src =
|
||||
"main(void)\n"
|
||||
"{\n"
|
||||
" vec4 pass1 = v_color;\n"
|
||||
" vec4 envColor = pass1; // TODO: colorClamp\n"
|
||||
" vec4 envColor = max(pass1, u_colorClamp);\n"
|
||||
" pass1 *= texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));\n"
|
||||
|
||||
" vec4 pass2 = envColor*u_coefficient*texture(tex1, vec2(v_tex1.x, 1.0-v_tex1.y));\n"
|
||||
" vec4 pass2 = envColor*shininess*texture(tex1, vec2(v_tex1.x, 1.0-v_tex1.y));\n"
|
||||
|
||||
" pass1.rgb = mix(u_fogColor.rgb, pass1.rgb, v_fog);\n"
|
||||
" pass2.rgb = mix(vec3(0.0, 0.0, 0.0), pass2.rgb, v_fog);\n"
|
||||
|
||||
" color.rgb = pass1.rgb*pass1.a + pass2.rgb;\n"
|
||||
" float fba = max(pass1.a, disableFBA);\n"
|
||||
" color.rgb = pass1.rgb*pass1.a + pass2.rgb*fba;\n"
|
||||
" color.a = pass1.a;\n"
|
||||
|
||||
" DoAlphaTest(color.a);\n"
|
||||
|
||||
Reference in New Issue
Block a user