diff --git a/plugins/GSdx/GSDevice.cpp b/plugins/GSdx/GSDevice.cpp index 748ca7e996..ce11e433df 100644 --- a/plugins/GSdx/GSDevice.cpp +++ b/plugins/GSdx/GSDevice.cpp @@ -106,7 +106,7 @@ void GSDevice::Present(const GSVector4i& r, int shader) if(m_current) { - static int s_shader[3] = {0, 5, 6}; // FIXME + static int s_shader[4] = {0, 5, 6, 8}; // FIXME Present(m_current, m_backbuffer, GSVector4(r), s_shader[shader]); } diff --git a/plugins/GSdx/GSDevice11.h b/plugins/GSdx/GSDevice11.h index ce2574bfad..8f5e7d3fe7 100644 --- a/plugins/GSdx/GSDevice11.h +++ b/plugins/GSdx/GSDevice11.h @@ -90,7 +90,7 @@ public: // TODO { CComPtr il; CComPtr vs; - CComPtr ps[8]; + CComPtr ps[9]; CComPtr ln; CComPtr pt; CComPtr dss; diff --git a/plugins/GSdx/GSDevice9.h b/plugins/GSdx/GSDevice9.h index 215999bfcc..7db4f2cc98 100644 --- a/plugins/GSdx/GSDevice9.h +++ b/plugins/GSdx/GSDevice9.h @@ -119,7 +119,7 @@ public: // TODO { CComPtr il; CComPtr vs; - CComPtr ps[8]; + CComPtr ps[9]; Direct3DSamplerState9 ln; Direct3DSamplerState9 pt; Direct3DDepthStencilState9 dss; diff --git a/plugins/GSdx/GSRenderer.cpp b/plugins/GSdx/GSRenderer.cpp index f281580b79..a4797499dc 100644 --- a/plugins/GSdx/GSRenderer.cpp +++ b/plugins/GSdx/GSRenderer.cpp @@ -550,7 +550,7 @@ void GSRenderer::KeyEvent(GSKeyEventData* e) m_aspectratio = (m_aspectratio + 3 + step) % 3; return; case VK_F7: - m_shader = (m_shader + 3 + step) % 3; + m_shader = (m_shader + 4 + step) % 4; printf("GSdx: Set shader %d.\n", (int)m_shader); return; case VK_DELETE: diff --git a/plugins/GSdx/res/convert.fx b/plugins/GSdx/res/convert.fx index 4703813c7e..042214702e 100644 --- a/plugins/GSdx/res/convert.fx +++ b/plugins/GSdx/res/convert.fx @@ -170,26 +170,36 @@ PS_OUTPUT ps_main4(PS_INPUT input) return output; } -PS_OUTPUT ps_main5(PS_INPUT input) // triangular +PS_OUTPUT ps_main5(PS_INPUT input) // scanlines { PS_OUTPUT output; uint4 p = (uint4)input.p; - // output.c = ps_crt(input, ((p.x + (p.y & 1) * 3) >> 1) % 3); - output.c = ps_crt(input, ((p.x + ((p.y >> 1) & 1) * 3) >> 1) % 3); + output.c = ps_scanlines(input, p.y % 2); return output; } -PS_OUTPUT ps_main6(PS_INPUT input) // diagonal (repurposed for scanlines for now) +PS_OUTPUT ps_main6(PS_INPUT input) // diagonal { PS_OUTPUT output; uint4 p = (uint4)input.p; - output.c = ps_scanlines(input, p.y % 2); // scanlines - //output.c = ps_crt(input, (p.x + (p.y % 3)) % 3); // diagonal + output.c = ps_crt(input, (p.x + (p.y % 3)) % 3); + + return output; +} + +PS_OUTPUT ps_main8(PS_INPUT input) // triangular +{ + PS_OUTPUT output; + + uint4 p = (uint4)input.p; + + // output.c = ps_crt(input, ((p.x + (p.y & 1) * 3) >> 1) % 3); + output.c = ps_crt(input, ((p.x + ((p.y >> 1) & 1) * 3) >> 1) % 3); return output; } @@ -240,26 +250,36 @@ PS_OUTPUT ps_main4(PS_INPUT input) return output; } -PS_OUTPUT ps_main5(PS_INPUT input) // triangular +PS_OUTPUT ps_main5(PS_INPUT input) // scanlines { PS_OUTPUT output; int4 p = (int4)input.p; + output.c = ps_scanlines(input, p.y % 2); + + return output; +} + +PS_OUTPUT ps_main6(PS_INPUT input) // diagonal +{ + PS_OUTPUT output; + + int4 p = (int4)input.p; + + output.c = ps_crt(input, (p.x + (p.y % 3)) % 3); + + return output; +} + +PS_OUTPUT ps_main8(PS_INPUT input) // triangular +{ + PS_OUTPUT output; + + int4 p = (int4)input.p; + // output.c = ps_crt(input, ((p.x + (p.y % 2) * 3) / 2) % 3); output.c = ps_crt(input, ((p.x + ((p.y / 2) % 2) * 3) / 2) % 3); - - return output; -} - -PS_OUTPUT ps_main6(PS_INPUT input) // diagonal (repurposed for scanlines for now) -{ - PS_OUTPUT output; - - int4 p = (int4)input.p; - - output.c = ps_scanlines(input, p.y % 2); // scanlines - //output.c = ps_crt(input, (p.x + (p.y % 3)) % 3); // diagonal return output; }