mirror of https://github.com/PCSX2/pcsx2.git
gsdx ogl: do the same as previous commit but for ogl ;)
* fix the missing auto interlace opt when cycling with hotkey on linux git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5810 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
2ac3c47c42
commit
2238095a82
|
@ -69,19 +69,19 @@ GSDeviceOGL::~GSDeviceOGL()
|
||||||
delete (m_vb_sr);
|
delete (m_vb_sr);
|
||||||
|
|
||||||
// Clean m_merge_obj
|
// Clean m_merge_obj
|
||||||
for (uint32 i = 0; i < 2; i++)
|
for (size_t i = 0; i < countof(m_merge_obj.ps); i++)
|
||||||
m_shader->Delete(m_merge_obj.ps[i]);
|
m_shader->Delete(m_merge_obj.ps[i]);
|
||||||
delete (m_merge_obj.cb);
|
delete (m_merge_obj.cb);
|
||||||
delete (m_merge_obj.bs);
|
delete (m_merge_obj.bs);
|
||||||
|
|
||||||
// Clean m_interlace
|
// Clean m_interlace
|
||||||
for (uint32 i = 0; i < 2; i++)
|
for (size_t i = 0; i < countof(m_interlace.ps); i++)
|
||||||
m_shader->Delete(m_interlace.ps[i]);
|
m_shader->Delete(m_interlace.ps[i]);
|
||||||
delete (m_interlace.cb);
|
delete (m_interlace.cb);
|
||||||
|
|
||||||
// Clean m_convert
|
// Clean m_convert
|
||||||
m_shader->Delete(m_convert.vs);
|
m_shader->Delete(m_convert.vs);
|
||||||
for (uint32 i = 0; i < 2; i++)
|
for (size_t i = 0; i < countof(m_convert.ps); i++)
|
||||||
m_shader->Delete(m_convert.ps[i]);
|
m_shader->Delete(m_convert.ps[i]);
|
||||||
delete m_convert.dss;
|
delete m_convert.dss;
|
||||||
delete m_convert.bs;
|
delete m_convert.bs;
|
||||||
|
|
|
@ -476,7 +476,7 @@ class GSDeviceOGL : public GSDevice
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
GLuint vs; // program object
|
GLuint vs; // program object
|
||||||
GLuint ps[8]; // program object
|
GLuint ps[9]; // program object
|
||||||
GLuint ln; // sampler object
|
GLuint ln; // sampler object
|
||||||
GLuint pt; // sampler object
|
GLuint pt; // sampler object
|
||||||
GSDepthStencilOGL* dss;
|
GSDepthStencilOGL* dss;
|
||||||
|
|
|
@ -533,6 +533,9 @@ void GSRenderer::EndCapture()
|
||||||
|
|
||||||
void GSRenderer::KeyEvent(GSKeyEventData* e)
|
void GSRenderer::KeyEvent(GSKeyEventData* e)
|
||||||
{
|
{
|
||||||
|
const unsigned int interlace_nb = 8;
|
||||||
|
const unsigned int post_shader_nb = 4;
|
||||||
|
const unsigned int aspect_ratio_nb = 3;
|
||||||
#ifdef _WINDOWS
|
#ifdef _WINDOWS
|
||||||
if(e->type == KEYPRESS)
|
if(e->type == KEYPRESS)
|
||||||
{
|
{
|
||||||
|
@ -542,15 +545,15 @@ void GSRenderer::KeyEvent(GSKeyEventData* e)
|
||||||
switch(e->key)
|
switch(e->key)
|
||||||
{
|
{
|
||||||
case VK_F5:
|
case VK_F5:
|
||||||
m_interlace = (m_interlace + 8 + step) % 8;
|
m_interlace = (m_interlace + interlace_nb + step) % interlace_nb;
|
||||||
printf("GSdx: Set deinterlace mode to %d (%s).\n", (int)m_interlace, theApp.m_gs_interlace.at(m_interlace).name.c_str());
|
printf("GSdx: Set deinterlace mode to %d (%s).\n", (int)m_interlace, theApp.m_gs_interlace.at(m_interlace).name.c_str());
|
||||||
return;
|
return;
|
||||||
case VK_F6:
|
case VK_F6:
|
||||||
if( m_wnd->IsManaged() )
|
if( m_wnd->IsManaged() )
|
||||||
m_aspectratio = (m_aspectratio + 3 + step) % 3;
|
m_aspectratio = (m_aspectratio + aspect_ratio_nb + step) % aspect_ratio_nb;
|
||||||
return;
|
return;
|
||||||
case VK_F7:
|
case VK_F7:
|
||||||
m_shader = (m_shader + 4 + step) % 4;
|
m_shader = (m_shader + post_shader_nb + step) % post_shader_nb;
|
||||||
printf("GSdx: Set shader %d.\n", (int)m_shader);
|
printf("GSdx: Set shader %d.\n", (int)m_shader);
|
||||||
return;
|
return;
|
||||||
case VK_DELETE:
|
case VK_DELETE:
|
||||||
|
@ -576,15 +579,15 @@ void GSRenderer::KeyEvent(GSKeyEventData* e)
|
||||||
switch(e->key)
|
switch(e->key)
|
||||||
{
|
{
|
||||||
case XK_F5:
|
case XK_F5:
|
||||||
m_interlace = (m_interlace + 7 + step) % 7;
|
m_interlace = (m_interlace + interlace_nb + step) % interlace_nb;
|
||||||
fprintf(stderr, "GSdx: Set deinterlace mode to %d (%s).\n", (int)m_interlace, theApp.m_gs_interlace.at(m_interlace).name.c_str());
|
fprintf(stderr, "GSdx: Set deinterlace mode to %d (%s).\n", (int)m_interlace, theApp.m_gs_interlace.at(m_interlace).name.c_str());
|
||||||
return;
|
return;
|
||||||
case XK_F6:
|
case XK_F6:
|
||||||
if( m_wnd->IsManaged() )
|
if( m_wnd->IsManaged() )
|
||||||
m_aspectratio = (m_aspectratio + 3 + step) % 3;
|
m_aspectratio = (m_aspectratio + aspect_ratio_nb + step) % aspect_ratio_nb;
|
||||||
return;
|
return;
|
||||||
case XK_F7:
|
case XK_F7:
|
||||||
m_shader = (m_shader + 3 + step) % 3;
|
m_shader = (m_shader + post_shader_nb + step) % post_shader_nb;
|
||||||
fprintf(stderr,"GSdx: Set shader %d.\n", (int)m_shader);
|
fprintf(stderr,"GSdx: Set shader %d.\n", (int)m_shader);
|
||||||
return;
|
return;
|
||||||
case XK_Delete:
|
case XK_Delete:
|
||||||
|
|
|
@ -132,6 +132,17 @@ vec4 ps_crt(uint i)
|
||||||
return sample_c() * clamp((mask[i] + 0.5f), 0.0f, 1.0f);
|
return sample_c() * clamp((mask[i] + 0.5f), 0.0f, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vec4 ps_scanlines(int i)
|
||||||
|
{
|
||||||
|
float4 mask[2] =
|
||||||
|
{
|
||||||
|
float4(1, 1, 1, 0),
|
||||||
|
float4(0, 0, 0, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
return sample_c() * clamp((mask[i] + 0.5f), 0.0f, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef ps_main0
|
#ifdef ps_main0
|
||||||
void ps_main0()
|
void ps_main0()
|
||||||
{
|
{
|
||||||
|
@ -164,11 +175,11 @@ void ps_main7()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ps_main5
|
#ifdef ps_main5
|
||||||
void ps_main5() // triangular
|
void ps_main5() // scanlines
|
||||||
{
|
{
|
||||||
highp uvec4 p = uvec4(PSin_p);
|
highp uvec4 p = uvec4(PSin_p);
|
||||||
|
|
||||||
vec4 c = ps_crt(((p.x + ((p.y >> 1u) & 1u) * 3u) >> 1u) % 3u);
|
vec4 c = ps_scanlines(p.y % 2u);
|
||||||
|
|
||||||
SV_Target0 = c;
|
SV_Target0 = c;
|
||||||
}
|
}
|
||||||
|
@ -185,6 +196,17 @@ void ps_main6() // diagonal
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ps_main8
|
||||||
|
void ps_main8() // triangular
|
||||||
|
{
|
||||||
|
uvec4 p = uvec4(PSin_p);
|
||||||
|
|
||||||
|
vec4 c = ps_crt(((p.x + ((p.y >> 1u) & 1u) * 3u) >> 1u) % 3u);
|
||||||
|
|
||||||
|
SV_Target0 = c;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Used for DATE (stencil)
|
// Used for DATE (stencil)
|
||||||
// DATM == 1
|
// DATM == 1
|
||||||
#ifdef ps_main2
|
#ifdef ps_main2
|
||||||
|
|
|
@ -157,6 +157,17 @@ static const char* convert_glsl =
|
||||||
" return sample_c() * clamp((mask[i] + 0.5f), 0.0f, 1.0f);\n"
|
" return sample_c() * clamp((mask[i] + 0.5f), 0.0f, 1.0f);\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
"vec4 ps_scanlines(int i)\n"
|
||||||
|
"{\n"
|
||||||
|
" float4 mask[2] =\n"
|
||||||
|
" {\n"
|
||||||
|
" float4(1, 1, 1, 0),\n"
|
||||||
|
" float4(0, 0, 0, 0)\n"
|
||||||
|
" };\n"
|
||||||
|
"\n"
|
||||||
|
" return sample_c() * clamp((mask[i] + 0.5f), 0.0f, 1.0f);\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
"#ifdef ps_main0\n"
|
"#ifdef ps_main0\n"
|
||||||
"void ps_main0()\n"
|
"void ps_main0()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
@ -189,11 +200,11 @@ static const char* convert_glsl =
|
||||||
"#endif\n"
|
"#endif\n"
|
||||||
"\n"
|
"\n"
|
||||||
"#ifdef ps_main5\n"
|
"#ifdef ps_main5\n"
|
||||||
"void ps_main5() // triangular\n"
|
"void ps_main5() // scanlines\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" highp uvec4 p = uvec4(PSin_p);\n"
|
" highp uvec4 p = uvec4(PSin_p);\n"
|
||||||
"\n"
|
"\n"
|
||||||
" vec4 c = ps_crt(((p.x + ((p.y >> 1u) & 1u) * 3u) >> 1u) % 3u);\n"
|
" vec4 c = ps_scanlines(p.y % 2u);\n"
|
||||||
"\n"
|
"\n"
|
||||||
" SV_Target0 = c;\n"
|
" SV_Target0 = c;\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
|
@ -210,6 +221,17 @@ static const char* convert_glsl =
|
||||||
"}\n"
|
"}\n"
|
||||||
"#endif\n"
|
"#endif\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
"#ifdef ps_main8\n"
|
||||||
|
"void ps_main8() // triangular\n"
|
||||||
|
"{\n"
|
||||||
|
" uvec4 p = uvec4(PSin_p);\n"
|
||||||
|
"\n"
|
||||||
|
" vec4 c = ps_crt(((p.x + ((p.y >> 1u) & 1u) * 3u) >> 1u) % 3u);\n"
|
||||||
|
"\n"
|
||||||
|
" SV_Target0 = c;\n"
|
||||||
|
"}\n"
|
||||||
|
"#endif\n"
|
||||||
|
"\n"
|
||||||
"// Used for DATE (stencil)\n"
|
"// Used for DATE (stencil)\n"
|
||||||
"// DATM == 1\n"
|
"// DATM == 1\n"
|
||||||
"#ifdef ps_main2\n"
|
"#ifdef ps_main2\n"
|
||||||
|
@ -1725,7 +1747,7 @@ static const char* fxaa_fx =
|
||||||
"#endif\n"
|
"#endif\n"
|
||||||
"#endif\n"
|
"#endif\n"
|
||||||
"\n"
|
"\n"
|
||||||
"#if !pGL_ES && __VERSION__ > 140\n"
|
"#if !GL_ES && __VERSION__ > 140\n"
|
||||||
"\n"
|
"\n"
|
||||||
"in SHADER\n"
|
"in SHADER\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
|
Loading…
Reference in New Issue