mirror of https://github.com/PCSX2/pcsx2.git
gsdx-gui: Separate opengl and direct3d blending options.
A short summary how d3d option behaves compared to gl. None d3d-> behaves the same Basic d3d-> even less than 1/3 of Basic opengl. Medium d3d -> less than 1/3 of Basic opengl. High d3d -> 1/3 of Basic opengl. Note: Medium and High options are mostly intended for debug use.
This commit is contained in:
parent
d4b62444d1
commit
c3f36ad430
|
@ -302,6 +302,11 @@ void GSdxApp::Init()
|
||||||
m_gs_acc_blend_level.push_back(GSSetting(4, "Full", "Very Slow"));
|
m_gs_acc_blend_level.push_back(GSSetting(4, "Full", "Very Slow"));
|
||||||
m_gs_acc_blend_level.push_back(GSSetting(5, "Ultra", "Ultra Slow"));
|
m_gs_acc_blend_level.push_back(GSSetting(5, "Ultra", "Ultra Slow"));
|
||||||
|
|
||||||
|
m_gs_acc_blend_level_d3d11.push_back(GSSetting(0, "None", "Fastest"));
|
||||||
|
m_gs_acc_blend_level_d3d11.push_back(GSSetting(1, "Basic", "Recommended"));
|
||||||
|
m_gs_acc_blend_level_d3d11.push_back(GSSetting(2, "Medium", "Debug"));
|
||||||
|
m_gs_acc_blend_level_d3d11.push_back(GSSetting(3, "High", "Debug"));
|
||||||
|
|
||||||
m_gs_tv_shaders.push_back(GSSetting(0, "None", ""));
|
m_gs_tv_shaders.push_back(GSSetting(0, "None", ""));
|
||||||
m_gs_tv_shaders.push_back(GSSetting(1, "Scanline filter", ""));
|
m_gs_tv_shaders.push_back(GSSetting(1, "Scanline filter", ""));
|
||||||
m_gs_tv_shaders.push_back(GSSetting(2, "Diagonal filter", ""));
|
m_gs_tv_shaders.push_back(GSSetting(2, "Diagonal filter", ""));
|
||||||
|
@ -339,6 +344,9 @@ void GSdxApp::Init()
|
||||||
m_default_configuration["CaptureVideoCodecDisplayName"] = "";
|
m_default_configuration["CaptureVideoCodecDisplayName"] = "";
|
||||||
m_default_configuration["dx_break_on_severity"] = "0";
|
m_default_configuration["dx_break_on_severity"] = "0";
|
||||||
|
|
||||||
|
// D3D Blending option
|
||||||
|
m_default_configuration["accurate_blending_unit_d3d11"] = "1";
|
||||||
|
|
||||||
// OpenCL device. Windows only for now.
|
// OpenCL device. Windows only for now.
|
||||||
m_default_configuration["ocldev"] = "";
|
m_default_configuration["ocldev"] = "";
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,7 @@ public:
|
||||||
std::vector<GSSetting> m_gs_crc_level;
|
std::vector<GSSetting> m_gs_crc_level;
|
||||||
std::vector<GSSetting> m_gs_acc_date_level;
|
std::vector<GSSetting> m_gs_acc_date_level;
|
||||||
std::vector<GSSetting> m_gs_acc_blend_level;
|
std::vector<GSSetting> m_gs_acc_blend_level;
|
||||||
|
std::vector<GSSetting> m_gs_acc_blend_level_d3d11;
|
||||||
std::vector<GSSetting> m_gs_tv_shaders;
|
std::vector<GSSetting> m_gs_tv_shaders;
|
||||||
|
|
||||||
std::vector<GSSetting> m_gpu_renderers;
|
std::vector<GSSetting> m_gpu_renderers;
|
||||||
|
|
|
@ -324,6 +324,7 @@ BEGIN
|
||||||
COMBOBOX IDC_ACCURATE_DATE,104,253,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
COMBOBOX IDC_ACCURATE_DATE,104,253,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
LTEXT "Accurate Blending:",IDC_ACCURATE_BLEND_UNIT_TEXT,22,271,79,8
|
LTEXT "Accurate Blending:",IDC_ACCURATE_BLEND_UNIT_TEXT,22,271,79,8
|
||||||
COMBOBOX IDC_ACCURATE_BLEND_UNIT,104,269,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
COMBOBOX IDC_ACCURATE_BLEND_UNIT,104,269,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
|
COMBOBOX IDC_ACCURATE_BLEND_UNIT_D3D11,104,269,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
// Software Renderer Settings:
|
// Software Renderer Settings:
|
||||||
GROUPBOX "Software Renderer Settings",IDC_STATIC,6,295,230,40,BS_CENTER
|
GROUPBOX "Software Renderer Settings",IDC_STATIC,6,295,230,40,BS_CENTER
|
||||||
CONTROL "Edge Anti-aliasing (Del)",IDC_AA1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,306,91,10
|
CONTROL "Edge Anti-aliasing (Del)",IDC_AA1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,306,91,10
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
GSRendererDX11::GSRendererDX11()
|
GSRendererDX11::GSRendererDX11()
|
||||||
: GSRendererHW(new GSTextureCache11(this))
|
: GSRendererHW(new GSTextureCache11(this))
|
||||||
{
|
{
|
||||||
|
m_sw_blending = theApp.GetConfigI("accurate_blending_unit_d3d11");
|
||||||
if (theApp.GetConfigB("UserHacks"))
|
if (theApp.GetConfigB("UserHacks"))
|
||||||
UserHacks_AlphaStencil = theApp.GetConfigB("UserHacks_AlphaStencil");
|
UserHacks_AlphaStencil = theApp.GetConfigB("UserHacks_AlphaStencil");
|
||||||
else
|
else
|
||||||
|
|
|
@ -40,7 +40,6 @@ GSRendererHW::GSRendererHW(GSTextureCache* tc)
|
||||||
m_upscale_multiplier = theApp.GetConfigI("upscale_multiplier");
|
m_upscale_multiplier = theApp.GetConfigI("upscale_multiplier");
|
||||||
m_large_framebuffer = theApp.GetConfigB("large_framebuffer");
|
m_large_framebuffer = theApp.GetConfigB("large_framebuffer");
|
||||||
m_accurate_date = theApp.GetConfigI("accurate_date");
|
m_accurate_date = theApp.GetConfigI("accurate_date");
|
||||||
m_sw_blending = theApp.GetConfigI("accurate_blending_unit");
|
|
||||||
if (theApp.GetConfigB("UserHacks")) {
|
if (theApp.GetConfigB("UserHacks")) {
|
||||||
m_userhacks_enabled_gs_mem_clear = !theApp.GetConfigB("UserHacks_Disable_Safe_Features");
|
m_userhacks_enabled_gs_mem_clear = !theApp.GetConfigB("UserHacks_Disable_Safe_Features");
|
||||||
m_userHacks_enabled_unscale_ptln = !theApp.GetConfigB("UserHacks_Disable_Safe_Features");
|
m_userHacks_enabled_unscale_ptln = !theApp.GetConfigB("UserHacks_Disable_Safe_Features");
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
GSRendererOGL::GSRendererOGL()
|
GSRendererOGL::GSRendererOGL()
|
||||||
: GSRendererHW(new GSTextureCacheOGL(this))
|
: GSRendererHW(new GSTextureCacheOGL(this))
|
||||||
{
|
{
|
||||||
|
m_sw_blending = theApp.GetConfigI("accurate_blending_unit");
|
||||||
if (theApp.GetConfigB("UserHacks"))
|
if (theApp.GetConfigB("UserHacks"))
|
||||||
UserHacks_tri_filter = static_cast<TriFiltering>(theApp.GetConfigI("UserHacks_TriFilter"));
|
UserHacks_tri_filter = static_cast<TriFiltering>(theApp.GetConfigI("UserHacks_TriFilter"));
|
||||||
else
|
else
|
||||||
|
|
|
@ -75,10 +75,6 @@ const char* dialog_message(int ID, bool* updateText) {
|
||||||
case IDC_WILDHACK:
|
case IDC_WILDHACK:
|
||||||
return "Lowers the GS precision to avoid gaps between pixels when upscaling.\n"
|
return "Lowers the GS precision to avoid gaps between pixels when upscaling.\n"
|
||||||
"Fixes the text on Wild Arms games.";
|
"Fixes the text on Wild Arms games.";
|
||||||
case IDC_ALPHASTENCIL:
|
|
||||||
return "Extend stencil based emulation of destination alpha to perform stencil operations while drawing.\n\n"
|
|
||||||
"Improves many shadows which are normally overdrawn in parts, may affect other effects.\n"
|
|
||||||
"Will disable partial transparency in some games or even prevent drawing some elements altogether.";
|
|
||||||
case IDC_ALIGN_SPRITE:
|
case IDC_ALIGN_SPRITE:
|
||||||
return "Fixes issues with upscaling(vertical lines) in Namco games like Ace Combat, Tekken, Soul Calibur, etc.";
|
return "Fixes issues with upscaling(vertical lines) in Namco games like Ace Combat, Tekken, Soul Calibur, etc.";
|
||||||
case IDC_ROUND_SPRITE:
|
case IDC_ROUND_SPRITE:
|
||||||
|
@ -121,8 +117,7 @@ const char* dialog_message(int ID, bool* updateText) {
|
||||||
"Full:\nExcept few cases, the blending unit will be fully emulated by the shader. It is ultra slow!\n"
|
"Full:\nExcept few cases, the blending unit will be fully emulated by the shader. It is ultra slow!\n"
|
||||||
"It is intended for debug.\n\n"
|
"It is intended for debug.\n\n"
|
||||||
"Ultra:\nThe blending unit will be completely emulated by the shader. It is ultra slow!\n"
|
"Ultra:\nThe blending unit will be completely emulated by the shader. It is ultra slow!\n"
|
||||||
"It is intended for debug.\n\n"
|
"It is intended for debug.";
|
||||||
"Note: Blending is very limited on Direct3D and only Basic mode is partially available.";
|
|
||||||
case IDC_TC_DEPTH:
|
case IDC_TC_DEPTH:
|
||||||
return "Disable the support of Depth buffer in the texture cache.\n"
|
return "Disable the support of Depth buffer in the texture cache.\n"
|
||||||
"It can help to increase speed but it will likely create various glitches.";
|
"It can help to increase speed but it will likely create various glitches.";
|
||||||
|
@ -200,6 +195,24 @@ const char* dialog_message(int ID, bool* updateText) {
|
||||||
"It increases GPU/memory requirements.\n\n"
|
"It increases GPU/memory requirements.\n\n"
|
||||||
"Note: It should be disabled for Armored Core, Destroy All Humans, and Gran Turismo.\n"
|
"Note: It should be disabled for Armored Core, Destroy All Humans, and Gran Turismo.\n"
|
||||||
"It will amplify RAM/VRAM spikes. Other games might be affected as well.";
|
"It will amplify RAM/VRAM spikes. Other games might be affected as well.";
|
||||||
|
// Windows only options.
|
||||||
|
#ifdef _WIN32
|
||||||
|
case IDC_ALPHASTENCIL:
|
||||||
|
return "Extend stencil based emulation of destination alpha to perform stencil operations while drawing.\n\n"
|
||||||
|
"Improves many shadows which are normally overdrawn in parts, may affect other effects.\n"
|
||||||
|
"Will disable partial transparency in some games or even prevent drawing some elements altogether.";
|
||||||
|
case IDC_ACCURATE_BLEND_UNIT_D3D11:
|
||||||
|
return "Control the accuracy level of the GS blending unit emulation.\n\n"
|
||||||
|
"None:\nFast but introduces various rendering issues.\n"
|
||||||
|
"It is intended for slow computer.\n\n"
|
||||||
|
"Basic:\nEmulate correctly some of the effects with a limited speed penalty.\n"
|
||||||
|
"This is the recommended setting.\n\n"
|
||||||
|
"Medium:\nExtend it to color shuffling. Performance impact remains reasonable..\n"
|
||||||
|
"It is intended for debug.\n\n"
|
||||||
|
"High:\nExtend it to triangle based primitives. It is ultra slow!\n"
|
||||||
|
"It is intended for debug.\n\n"
|
||||||
|
"Note: Direct3D and OpenGL blending options aren't the same, even High blending on Direct3D is like 1/3 of Basic blending on OpenGL.";
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
if (updateText)
|
if (updateText)
|
||||||
*updateText = false;
|
*updateText = false;
|
||||||
|
|
|
@ -51,7 +51,6 @@ enum {
|
||||||
IDC_OFFSETHACK,
|
IDC_OFFSETHACK,
|
||||||
IDC_SPRITEHACK,
|
IDC_SPRITEHACK,
|
||||||
IDC_WILDHACK,
|
IDC_WILDHACK,
|
||||||
IDC_ALPHASTENCIL,
|
|
||||||
IDC_ALIGN_SPRITE,
|
IDC_ALIGN_SPRITE,
|
||||||
IDC_ROUND_SPRITE,
|
IDC_ROUND_SPRITE,
|
||||||
IDC_TCOFFSETX,
|
IDC_TCOFFSETX,
|
||||||
|
|
|
@ -125,6 +125,7 @@ void GSSettingsDlg::OnInit()
|
||||||
ComboBoxInit(IDC_FILTER, theApp.m_gs_bifilter, theApp.GetConfigI("filter"));
|
ComboBoxInit(IDC_FILTER, theApp.m_gs_bifilter, theApp.GetConfigI("filter"));
|
||||||
ComboBoxInit(IDC_ACCURATE_DATE, theApp.m_gs_acc_date_level, theApp.GetConfigI("accurate_date"));
|
ComboBoxInit(IDC_ACCURATE_DATE, theApp.m_gs_acc_date_level, theApp.GetConfigI("accurate_date"));
|
||||||
ComboBoxInit(IDC_ACCURATE_BLEND_UNIT, theApp.m_gs_acc_blend_level, theApp.GetConfigI("accurate_blending_unit"));
|
ComboBoxInit(IDC_ACCURATE_BLEND_UNIT, theApp.m_gs_acc_blend_level, theApp.GetConfigI("accurate_blending_unit"));
|
||||||
|
ComboBoxInit(IDC_ACCURATE_BLEND_UNIT_D3D11, theApp.m_gs_acc_blend_level_d3d11, theApp.GetConfigI("accurate_blending_unit_d3d11"));
|
||||||
ComboBoxInit(IDC_CRC_LEVEL, theApp.m_gs_crc_level, theApp.GetConfigI("crc_hack_level"));
|
ComboBoxInit(IDC_CRC_LEVEL, theApp.m_gs_crc_level, theApp.GetConfigI("crc_hack_level"));
|
||||||
|
|
||||||
CheckDlgButton(m_hWnd, IDC_PALTEX, theApp.GetConfigB("paltex"));
|
CheckDlgButton(m_hWnd, IDC_PALTEX, theApp.GetConfigB("paltex"));
|
||||||
|
@ -149,6 +150,7 @@ void GSSettingsDlg::OnInit()
|
||||||
AddTooltip(IDC_PALTEX);
|
AddTooltip(IDC_PALTEX);
|
||||||
AddTooltip(IDC_ACCURATE_DATE);
|
AddTooltip(IDC_ACCURATE_DATE);
|
||||||
AddTooltip(IDC_ACCURATE_BLEND_UNIT);
|
AddTooltip(IDC_ACCURATE_BLEND_UNIT);
|
||||||
|
AddTooltip(IDC_ACCURATE_BLEND_UNIT_D3D11);
|
||||||
AddTooltip(IDC_AFCOMBO);
|
AddTooltip(IDC_AFCOMBO);
|
||||||
AddTooltip(IDC_AA1);
|
AddTooltip(IDC_AA1);
|
||||||
AddTooltip(IDC_MIPMAP_HW);
|
AddTooltip(IDC_MIPMAP_HW);
|
||||||
|
@ -262,6 +264,11 @@ bool GSSettingsDlg::OnCommand(HWND hWnd, UINT id, UINT code)
|
||||||
theApp.SetConfig("accurate_blending_unit", (int)data);
|
theApp.SetConfig("accurate_blending_unit", (int)data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(ComboBoxGetSelData(IDC_ACCURATE_BLEND_UNIT_D3D11, data))
|
||||||
|
{
|
||||||
|
theApp.SetConfig("accurate_blending_unit_d3d11", (int)data);
|
||||||
|
}
|
||||||
|
|
||||||
if (ComboBoxGetSelData(IDC_CRC_LEVEL, data))
|
if (ComboBoxGetSelData(IDC_CRC_LEVEL, data))
|
||||||
{
|
{
|
||||||
theApp.SetConfig("crc_hack_level", (int)data);
|
theApp.SetConfig("crc_hack_level", (int)data);
|
||||||
|
@ -384,7 +391,11 @@ void GSSettingsDlg::UpdateControls()
|
||||||
EnableWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_DATE), hw);
|
EnableWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_DATE), hw);
|
||||||
EnableWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_DATE_TEXT), hw);
|
EnableWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_DATE_TEXT), hw);
|
||||||
EnableWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT), hw);
|
EnableWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT), hw);
|
||||||
|
EnableWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT_D3D11), hw);
|
||||||
EnableWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT_TEXT), hw);
|
EnableWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT_TEXT), hw);
|
||||||
|
ShowWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT), ogl ? SW_SHOW : SW_HIDE);
|
||||||
|
ShowWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT_D3D11), dx11 ? SW_SHOW : SW_HIDE);
|
||||||
|
ShowWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT_TEXT), !null ? SW_SHOW : SW_HIDE);
|
||||||
|
|
||||||
// Software mode settings
|
// Software mode settings
|
||||||
EnableWindow(GetDlgItem(m_hWnd, IDC_MIPMAP_SW), sw);
|
EnableWindow(GetDlgItem(m_hWnd, IDC_MIPMAP_SW), sw);
|
||||||
|
|
|
@ -42,7 +42,8 @@
|
||||||
#define IDC_ACCURATE_DATE 2046
|
#define IDC_ACCURATE_DATE 2046
|
||||||
#define IDC_ACCURATE_DATE_TEXT 2047
|
#define IDC_ACCURATE_DATE_TEXT 2047
|
||||||
#define IDC_ACCURATE_BLEND_UNIT 2048
|
#define IDC_ACCURATE_BLEND_UNIT 2048
|
||||||
#define IDC_ACCURATE_BLEND_UNIT_TEXT 2049
|
#define IDC_ACCURATE_BLEND_UNIT_D3D11 2049
|
||||||
|
#define IDC_ACCURATE_BLEND_UNIT_TEXT 2050
|
||||||
// Software Renderer Settings:
|
// Software Renderer Settings:
|
||||||
#define IDC_MIPMAP_SW 2060
|
#define IDC_MIPMAP_SW 2060
|
||||||
#define IDC_AA1 2061
|
#define IDC_AA1 2061
|
||||||
|
|
Loading…
Reference in New Issue