mirror of https://github.com/PCSX2/pcsx2.git
gsdx ogl: HLE channel effect for terminator 3
Unfortunately I think the game uses another similar effects
This commit is contained in:
parent
247d33a627
commit
1c21ea955c
|
@ -718,8 +718,14 @@ void GSRendererOGL::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sour
|
|||
} else if (m_context->CLAMP.WMS == 3 && ((m_context->CLAMP.MINU & 0x8) == 0)) {
|
||||
// Read either Red or Green. Let's go for Red ;)
|
||||
// Pop
|
||||
GL_INS("Red channel");
|
||||
ps_sel.channel = 1;
|
||||
if (m_context->FRAME.FBMSK == 0xF0FFFFFF) {
|
||||
GL_INS("Terminator 3 G4B4 Channel");
|
||||
ps_sel.channel = 6;
|
||||
m_context->FRAME.FBMSK = 0x00FFFFFF;
|
||||
} else {
|
||||
GL_INS("Red channel");
|
||||
ps_sel.channel = 1;
|
||||
}
|
||||
} else {
|
||||
GL_INS("channel not supported");
|
||||
m_channel_shuffle = false;
|
||||
|
|
|
@ -345,6 +345,14 @@ vec4 fetch_rgb()
|
|||
return c * 255.0f;
|
||||
}
|
||||
|
||||
vec4 fetch_g4b4()
|
||||
{
|
||||
vec4 rt = fetch_raw_color() * 255.0f;
|
||||
uint g4 = (uint(rt.g) >> 4u) & 0x0Fu;
|
||||
uint b4 = (uint(rt.b) << 4u) & 0xF0u;
|
||||
return vec4(float(g4 | b4));
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
vec4 sample_color(vec2 st)
|
||||
|
@ -514,6 +522,8 @@ vec4 ps_color()
|
|||
vec4 T = fetch_blue();
|
||||
#elif PS_CHANNEL_FETCH == 4
|
||||
vec4 T = fetch_alpha();
|
||||
#elif PS_CHANNEL_FETCH == 6
|
||||
vec4 T = fetch_g4b4();
|
||||
#elif PS_CHANNEL_FETCH == 7
|
||||
vec4 T = fetch_rgb();
|
||||
#elif PS_DEPTH_FMT > 0
|
||||
|
|
|
@ -1189,6 +1189,14 @@ static const char* const tfx_fs_all_glsl =
|
|||
" return c * 255.0f;\n"
|
||||
"}\n"
|
||||
"\n"
|
||||
"vec4 fetch_g4b4()\n"
|
||||
"{\n"
|
||||
" vec4 rt = fetch_raw_color() * 255.0f;\n"
|
||||
" uint g4 = (uint(rt.g) >> 4u) & 0x0Fu;\n"
|
||||
" uint b4 = (uint(rt.b) << 4u) & 0xF0u;\n"
|
||||
" return vec4(float(g4 | b4));\n"
|
||||
"}\n"
|
||||
"\n"
|
||||
"//////////////////////////////////////////////////////////////////////\n"
|
||||
"\n"
|
||||
"vec4 sample_color(vec2 st)\n"
|
||||
|
@ -1358,6 +1366,8 @@ static const char* const tfx_fs_all_glsl =
|
|||
" vec4 T = fetch_blue();\n"
|
||||
"#elif PS_CHANNEL_FETCH == 4\n"
|
||||
" vec4 T = fetch_alpha();\n"
|
||||
"#elif PS_CHANNEL_FETCH == 6\n"
|
||||
" vec4 T = fetch_g4b4();\n"
|
||||
"#elif PS_CHANNEL_FETCH == 7\n"
|
||||
" vec4 T = fetch_rgb();\n"
|
||||
"#elif PS_DEPTH_FMT > 0\n"
|
||||
|
|
Loading…
Reference in New Issue