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(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(1, "Scanline 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["dx_break_on_severity"] = "0";
|
||||
|
||||
// D3D Blending option
|
||||
m_default_configuration["accurate_blending_unit_d3d11"] = "1";
|
||||
|
||||
// OpenCL device. Windows only for now.
|
||||
m_default_configuration["ocldev"] = "";
|
||||
|
||||
|
|
|
@ -83,6 +83,7 @@ public:
|
|||
std::vector<GSSetting> m_gs_crc_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_d3d11;
|
||||
std::vector<GSSetting> m_gs_tv_shaders;
|
||||
|
||||
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
|
||||
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_D3D11,104,269,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
// Software Renderer Settings:
|
||||
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
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
GSRendererDX11::GSRendererDX11()
|
||||
: GSRendererHW(new GSTextureCache11(this))
|
||||
{
|
||||
m_sw_blending = theApp.GetConfigI("accurate_blending_unit_d3d11");
|
||||
if (theApp.GetConfigB("UserHacks"))
|
||||
UserHacks_AlphaStencil = theApp.GetConfigB("UserHacks_AlphaStencil");
|
||||
else
|
||||
|
|
|
@ -40,7 +40,6 @@ GSRendererHW::GSRendererHW(GSTextureCache* tc)
|
|||
m_upscale_multiplier = theApp.GetConfigI("upscale_multiplier");
|
||||
m_large_framebuffer = theApp.GetConfigB("large_framebuffer");
|
||||
m_accurate_date = theApp.GetConfigI("accurate_date");
|
||||
m_sw_blending = theApp.GetConfigI("accurate_blending_unit");
|
||||
if (theApp.GetConfigB("UserHacks")) {
|
||||
m_userhacks_enabled_gs_mem_clear = !theApp.GetConfigB("UserHacks_Disable_Safe_Features");
|
||||
m_userHacks_enabled_unscale_ptln = !theApp.GetConfigB("UserHacks_Disable_Safe_Features");
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
GSRendererOGL::GSRendererOGL()
|
||||
: GSRendererHW(new GSTextureCacheOGL(this))
|
||||
{
|
||||
m_sw_blending = theApp.GetConfigI("accurate_blending_unit");
|
||||
if (theApp.GetConfigB("UserHacks"))
|
||||
UserHacks_tri_filter = static_cast<TriFiltering>(theApp.GetConfigI("UserHacks_TriFilter"));
|
||||
else
|
||||
|
|
|
@ -75,10 +75,6 @@ const char* dialog_message(int ID, bool* updateText) {
|
|||
case IDC_WILDHACK:
|
||||
return "Lowers the GS precision to avoid gaps between pixels when upscaling.\n"
|
||||
"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:
|
||||
return "Fixes issues with upscaling(vertical lines) in Namco games like Ace Combat, Tekken, Soul Calibur, etc.";
|
||||
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"
|
||||
"It is intended for debug.\n\n"
|
||||
"Ultra:\nThe blending unit will be completely emulated by the shader. It is ultra slow!\n"
|
||||
"It is intended for debug.\n\n"
|
||||
"Note: Blending is very limited on Direct3D and only Basic mode is partially available.";
|
||||
"It is intended for debug.";
|
||||
case IDC_TC_DEPTH:
|
||||
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.";
|
||||
|
@ -200,6 +195,24 @@ const char* dialog_message(int ID, bool* updateText) {
|
|||
"It increases GPU/memory requirements.\n\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.";
|
||||
// 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:
|
||||
if (updateText)
|
||||
*updateText = false;
|
||||
|
|
|
@ -51,7 +51,6 @@ enum {
|
|||
IDC_OFFSETHACK,
|
||||
IDC_SPRITEHACK,
|
||||
IDC_WILDHACK,
|
||||
IDC_ALPHASTENCIL,
|
||||
IDC_ALIGN_SPRITE,
|
||||
IDC_ROUND_SPRITE,
|
||||
IDC_TCOFFSETX,
|
||||
|
|
|
@ -125,6 +125,7 @@ void GSSettingsDlg::OnInit()
|
|||
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_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"));
|
||||
|
||||
CheckDlgButton(m_hWnd, IDC_PALTEX, theApp.GetConfigB("paltex"));
|
||||
|
@ -149,6 +150,7 @@ void GSSettingsDlg::OnInit()
|
|||
AddTooltip(IDC_PALTEX);
|
||||
AddTooltip(IDC_ACCURATE_DATE);
|
||||
AddTooltip(IDC_ACCURATE_BLEND_UNIT);
|
||||
AddTooltip(IDC_ACCURATE_BLEND_UNIT_D3D11);
|
||||
AddTooltip(IDC_AFCOMBO);
|
||||
AddTooltip(IDC_AA1);
|
||||
AddTooltip(IDC_MIPMAP_HW);
|
||||
|
@ -262,6 +264,11 @@ bool GSSettingsDlg::OnCommand(HWND hWnd, UINT id, UINT code)
|
|||
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))
|
||||
{
|
||||
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_TEXT), 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);
|
||||
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
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_MIPMAP_SW), sw);
|
||||
|
|
|
@ -42,7 +42,8 @@
|
|||
#define IDC_ACCURATE_DATE 2046
|
||||
#define IDC_ACCURATE_DATE_TEXT 2047
|
||||
#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:
|
||||
#define IDC_MIPMAP_SW 2060
|
||||
#define IDC_AA1 2061
|
||||
|
|
Loading…
Reference in New Issue