gsdx:windows: Add external shader selection to GUI

This lets Windows users select the external shader and config file via the
GUI.

Also, comment out an unused variable in the Hacks dialog code.
This commit is contained in:
Jonathan Li 2015-09-21 22:32:11 +01:00
parent a57b2a059a
commit 64cccda076
3 changed files with 74 additions and 35 deletions

View File

@ -170,6 +170,8 @@ void GSSettingsDlg::OnInit()
// External FX shader // External FX shader
CheckDlgButton(m_hWnd, IDC_SHADER_FX, theApp.GetConfig("shaderfx", 0)); CheckDlgButton(m_hWnd, IDC_SHADER_FX, theApp.GetConfig("shaderfx", 0));
SendMessage(GetDlgItem(m_hWnd, IDC_SHADER_FX_EDIT), WM_SETTEXT, 0, (LPARAM)theApp.GetConfig("shaderfx_glsl", "shaders\\GSdx.fx").c_str());
SendMessage(GetDlgItem(m_hWnd, IDC_SHADER_FX_CONF_EDIT), WM_SETTEXT, 0, (LPARAM)theApp.GetConfig("shaderfx_conf", "shaders\\GSdx_FX_Settings.ini").c_str());
// Hacks // Hacks
CheckDlgButton(m_hWnd, IDC_HACKS_ENABLED, theApp.GetConfig("UserHacks", 0)); CheckDlgButton(m_hWnd, IDC_HACKS_ENABLED, theApp.GetConfig("UserHacks", 0));
@ -220,6 +222,7 @@ bool GSSettingsDlg::OnCommand(HWND hWnd, UINT id, UINT code)
UpdateControls(); UpdateControls();
break; break;
case IDC_SHADEBOOST: case IDC_SHADEBOOST:
case IDC_SHADER_FX:
case IDC_PALTEX: case IDC_PALTEX:
case IDC_HACKS_ENABLED: case IDC_HACKS_ENABLED:
if (code == BN_CLICKED) if (code == BN_CLICKED)
@ -233,6 +236,14 @@ bool GSSettingsDlg::OnCommand(HWND hWnd, UINT id, UINT code)
if (code == BN_CLICKED) if (code == BN_CLICKED)
HacksDlg.DoModal(); HacksDlg.DoModal();
break; break;
case IDC_SHADER_FX_BUTTON:
if (code == BN_CLICKED)
OpenFileDialog(IDC_SHADER_FX_EDIT, "Select External Shader");
break;
case IDC_SHADER_FX_CONF_BUTTON:
if (code == BN_CLICKED)
OpenFileDialog(IDC_SHADER_FX_CONF_EDIT, "Select External Shader Config");
break;
case IDOK: case IDOK:
{ {
INT_PTR data; INT_PTR data;
@ -308,8 +319,17 @@ bool GSSettingsDlg::OnCommand(HWND hWnd, UINT id, UINT code)
theApp.SetConfig("shaderfx", (int)IsDlgButtonChecked(m_hWnd, IDC_SHADER_FX)); theApp.SetConfig("shaderfx", (int)IsDlgButtonChecked(m_hWnd, IDC_SHADER_FX));
// External FX Shader(OpenGL) // External FX Shader(OpenGL)
theApp.SetConfig("shaderfx_conf", "shaders/GSdx_FX_Settings.ini"); int shader_fx_length = (int)SendMessage(GetDlgItem(m_hWnd, IDC_SHADER_FX_EDIT), WM_GETTEXTLENGTH, 0, 0);
theApp.SetConfig("shaderfx_glsl", "shaders/GSdx.fx"); int shader_fx_conf_length = (int)SendMessage(GetDlgItem(m_hWnd, IDC_SHADER_FX_CONF_EDIT), WM_GETTEXTLENGTH, 0, 0);
int length = std::max(shader_fx_length, shader_fx_conf_length) + 1;
char *buffer = new char[length];
SendMessage(GetDlgItem(m_hWnd, IDC_SHADER_FX_EDIT), WM_GETTEXT, (WPARAM)length, (LPARAM)buffer);
theApp.SetConfig("shaderfx_glsl", buffer); // Not really glsl only ;)
SendMessage(GetDlgItem(m_hWnd, IDC_SHADER_FX_CONF_EDIT), WM_GETTEXT, (WPARAM)length, (LPARAM)buffer);
theApp.SetConfig("shaderfx_conf", buffer);
delete [] buffer;
theApp.SetConfig("UserHacks", (int)IsDlgButtonChecked(m_hWnd, IDC_HACKS_ENABLED)); theApp.SetConfig("UserHacks", (int)IsDlgButtonChecked(m_hWnd, IDC_HACKS_ENABLED));
} }
@ -416,19 +436,26 @@ void GSSettingsDlg::UpdateControls()
EnableWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT_TEXT), ogl && hw); EnableWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT_TEXT), ogl && hw);
EnableWindow(GetDlgItem(m_hWnd, IDC_TC_DEPTH), ogl && hw); EnableWindow(GetDlgItem(m_hWnd, IDC_TC_DEPTH), ogl && hw);
//EnableWindow(GetDlgItem(m_hWnd, IDC_AA1), sw); // Let uers set software params regardless of renderer used //EnableWindow(GetDlgItem(m_hWnd, IDC_AA1), sw); // Let uers set software params regardless of renderer used
//EnableWindow(GetDlgItem(m_hWnd, IDC_SWTHREADS_EDIT), sw); //EnableWindow(GetDlgItem(m_hWnd, IDC_SWTHREADS_EDIT), sw);
//EnableWindow(GetDlgItem(m_hWnd, IDC_SWTHREADS), sw); //EnableWindow(GetDlgItem(m_hWnd, IDC_SWTHREADS), sw);
// Shade Boost
EnableWindow(GetDlgItem(m_hWnd, IDC_SHADEBUTTON), IsDlgButtonChecked(m_hWnd, IDC_SHADEBOOST) == BST_CHECKED);
// Hacks // Hacks
EnableWindow(GetDlgItem(m_hWnd, IDC_HACKS_ENABLED), hw); EnableWindow(GetDlgItem(m_hWnd, IDC_HACKS_ENABLED), hw);
EnableWindow(GetDlgItem(m_hWnd, IDC_HACKSBUTTON), hw && IsDlgButtonChecked(m_hWnd, IDC_HACKS_ENABLED)); EnableWindow(GetDlgItem(m_hWnd, IDC_HACKSBUTTON), hw && IsDlgButtonChecked(m_hWnd, IDC_HACKS_ENABLED));
} }
// External shader
bool external_shader_selected = IsDlgButtonChecked(m_hWnd, IDC_SHADER_FX) == BST_CHECKED;
EnableWindow(GetDlgItem(m_hWnd, IDC_SHADER_FX_TEXT), external_shader_selected);
EnableWindow(GetDlgItem(m_hWnd, IDC_SHADER_FX_EDIT), external_shader_selected);
EnableWindow(GetDlgItem(m_hWnd, IDC_SHADER_FX_BUTTON), external_shader_selected);
EnableWindow(GetDlgItem(m_hWnd, IDC_SHADER_FX_CONF_TEXT), external_shader_selected);
EnableWindow(GetDlgItem(m_hWnd, IDC_SHADER_FX_CONF_EDIT), external_shader_selected);
EnableWindow(GetDlgItem(m_hWnd, IDC_SHADER_FX_CONF_BUTTON), external_shader_selected);
// Shade Boost
EnableWindow(GetDlgItem(m_hWnd, IDC_SHADEBUTTON), IsDlgButtonChecked(m_hWnd, IDC_SHADEBOOST) == BST_CHECKED);
} }
// Shade Boost Dialog // Shade Boost Dialog
@ -551,7 +578,7 @@ void GSHacksDlg::OnInit()
int renderer = SendMessage(hwnd_renderer, CB_GETITEMDATA, SendMessage(hwnd_renderer, CB_GETCURSEL, 0, 0), 0); int renderer = SendMessage(hwnd_renderer, CB_GETITEMDATA, SendMessage(hwnd_renderer, CB_GETCURSEL, 0, 0), 0);
// It can only be accessed with a HW renderer, so this is sufficient. // It can only be accessed with a HW renderer, so this is sufficient.
bool dx9 = renderer == 0; bool dx9 = renderer == 0;
bool dx11 = renderer == 3; // bool dx11 = renderer == 3;
bool ogl = renderer == 12; bool ogl = renderer == 12;
unsigned short cb = 0; unsigned short cb = 0;

View File

@ -181,13 +181,13 @@ BEGIN
CONTROL "Windowed",IDC_WINDOWED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,129,157,49,10 CONTROL "Windowed",IDC_WINDOWED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,129,157,49,10
END END
IDD_CONFIG DIALOGEX 0, 0, 185, 391 IDD_CONFIG DIALOGEX 0, 0, 185, 445
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "GSdx Settings" CAPTION "GSdx Settings"
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
CONTROL IDB_LOGO10,IDC_LOGO11,"Static",SS_BITMAP | SS_REALSIZECONTROL,6,6,173,42 CONTROL IDB_LOGO10,IDC_LOGO11,"Static",SS_BITMAP | SS_REALSIZECONTROL,6,6,173,42
DEFPUSHBUTTON "OK",IDOK,40,371,50,14 DEFPUSHBUTTON "OK",IDOK,40,425,50,14
LTEXT "Renderer:",IDC_STATIC,6,72,34,8 LTEXT "Renderer:",IDC_STATIC,6,72,34,8
COMBOBOX IDC_RENDERER,68,70,111,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_RENDERER,68,70,111,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "Interlacing (F5):",IDC_STATIC,6,101,53,8 LTEXT "Interlacing (F5):",IDC_STATIC,6,101,53,8
@ -197,41 +197,47 @@ BEGIN
CONTROL "",IDC_RESX,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,120,146,11,14 CONTROL "",IDC_RESX,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,120,146,11,14
EDITTEXT IDC_RESY_EDIT,136,146,39,13,ES_AUTOHSCROLL | ES_NUMBER EDITTEXT IDC_RESY_EDIT,136,146,39,13,ES_AUTOHSCROLL | ES_NUMBER
CONTROL "",IDC_RESY,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,154,146,11,14 CONTROL "",IDC_RESY,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,154,146,11,14
LTEXT "Extra rendering threads:",IDC_STATIC,11,340,83,8 LTEXT "Extra rendering threads:",IDC_STATIC,11,393,83,8
EDITTEXT IDC_SWTHREADS_EDIT,94,337,35,13,ES_AUTOHSCROLL | ES_NUMBER EDITTEXT IDC_SWTHREADS_EDIT,94,390,35,13,ES_AUTOHSCROLL | ES_NUMBER
CONTROL "",IDC_SWTHREADS,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,130,335,11,14 CONTROL "",IDC_SWTHREADS,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,130,388,11,14
COMBOBOX IDC_UPSCALE_MULTIPLIER,94,130,81,98,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_UPSCALE_MULTIPLIER,94,130,81,98,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
RTEXT "Internal Resolution:",IDC_STATIC,11,132,79,8 RTEXT "Internal Resolution:",IDC_STATIC,11,132,79,8
CONTROL "Edge Anti-aliasing (AA1)",IDC_AA1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,354,93,10 CONTROL "Edge Anti-aliasing (AA1)",IDC_AA1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,407,93,10
PUSHBUTTON "Cancel",IDCANCEL,95,371,50,14 PUSHBUTTON "Cancel",IDCANCEL,95,425,50,14
CONTROL IDB_LOGO9,IDC_LOGO9,"Static",SS_BITMAP | SS_REALSIZECONTROL,6,6,173,44 CONTROL IDB_LOGO9,IDC_LOGO9,"Static",SS_BITMAP | SS_REALSIZECONTROL,6,6,173,44
CONTROL IDB_LOGOGL,IDC_LOGOGL,"Static",SS_BITMAP | SS_REALSIZECONTROL,6,6,173,42 CONTROL IDB_LOGOGL,IDC_LOGOGL,"Static",SS_BITMAP | SS_REALSIZECONTROL,6,6,173,42
GROUPBOX "Enhancements",IDC_STATIC,6,116,173,58,BS_CENTER GROUPBOX "Enhancements",IDC_STATIC,6,116,173,58,BS_CENTER
GROUPBOX "Software Mode Settings",IDC_STATIC,6,328,173,41,BS_CENTER GROUPBOX "Software Mode Settings",IDC_STATIC,6,381,173,41,BS_CENTER
GROUPBOX "Hardware Mode Settings",IDC_STATIC,6,208,173,118,BS_CENTER GROUPBOX "Hardware Mode Settings",IDC_STATIC,6,261,173,118,BS_CENTER
CONTROL "Logarithmic Z",IDC_LOGZ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,297,58,8 CONTROL "Logarithmic Z",IDC_LOGZ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,350,58,8
CONTROL "Alpha Correction",IDC_FBA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,297,81,8 CONTROL "Alpha Correction",IDC_FBA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,350,81,8
CONTROL "Allow 8-Bit Textures",IDC_PALTEX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,219,79,10 CONTROL "Allow 8-Bit Textures",IDC_PALTEX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,272,79,10
CONTROL "Enable Shade Boost",IDC_SHADEBOOST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,178,79,10 CONTROL "Enable Shade Boost",IDC_SHADEBOOST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,178,79,10
CONTROL "Accurate Date",IDC_ACCURATE_DATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,297,67,8 CONTROL "Accurate Date",IDC_ACCURATE_DATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,350,67,8
PUSHBUTTON "Settings...",IDC_SHADEBUTTON,94,176,81,14 PUSHBUTTON "Settings...",IDC_SHADEBUTTON,94,176,81,14
CONTROL "Enable HW Hacks",IDC_HACKS_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,281,71,10 CONTROL "Enable HW Hacks",IDC_HACKS_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,334,71,10
PUSHBUTTON "Configure Hacks...",IDC_HACKSBUTTON,94,279,81,14 PUSHBUTTON "Configure Hacks...",IDC_HACKSBUTTON,94,332,81,14
LTEXT "Adapter:",IDC_STATIC,6,57,30,8 LTEXT "Adapter:",IDC_STATIC,6,57,30,8
COMBOBOX IDC_ADAPTER,68,55,111,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_ADAPTER,68,55,111,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Enable FXAA",IDC_FXAA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,194,61,10 CONTROL "Enable FXAA",IDC_FXAA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,194,61,10
CONTROL "Enable FX Shader",IDC_SHADER_FX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,194,71,10 CONTROL "Enable FX Shader",IDC_SHADER_FX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,194,71,10
RTEXT "Anisotropic Filtering:",IDC_AFCOMBO_TEXT,18,249,72,8 RTEXT "Anisotropic Filtering:",IDC_AFCOMBO_TEXT,18,302,72,8
COMBOBOX IDC_AFCOMBO,94,247,81,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_AFCOMBO,94,300,81,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "OpenCL Device:",IDC_STATIC,6,86,52,8 LTEXT "OpenCL Device:",IDC_STATIC,6,86,52,8
COMBOBOX IDC_OPENCL_DEVICE,68,84,111,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_OPENCL_DEVICE,68,84,111,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Hardware Depth",IDC_TC_DEPTH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,297,72,8 CONTROL "Hardware Depth",IDC_TC_DEPTH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,350,72,8
COMBOBOX IDC_ACCURATE_BLEND_UNIT,94,309,81,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_ACCURATE_BLEND_UNIT,94,362,81,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
RTEXT "Blending Unit Accuracy:",IDC_ACCURATE_BLEND_UNIT_TEXT,11,311,79,10 RTEXT "Blending Unit Accuracy:",IDC_ACCURATE_BLEND_UNIT_TEXT,11,364,79,10
COMBOBOX IDC_CRC_LEVEL,94,263,81,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_CRC_LEVEL,94,316,81,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
RTEXT "CRC Hack Level:",IDC_CRC_LEVEL_TEXT,36,265,54,8 RTEXT "CRC Hack Level:",IDC_CRC_LEVEL_TEXT,36,318,54,8
COMBOBOX IDC_FILTER,94,231,81,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_FILTER,94,284,81,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
RTEXT "Texture Filtering:",IDC_FILTER_TEXT,32,233,58,8 RTEXT "Texture Filtering:",IDC_FILTER_TEXT,32,286,58,8
LTEXT "External Shader",IDC_STATIC,11,209,52,8
EDITTEXT IDC_SHADER_FX_EDIT,11,219,113,14,ES_AUTOHSCROLL
PUSHBUTTON "Browse",IDC_SHADER_FX_BUTTON,128,219,47,14
LTEXT "External Shader Config",IDC_STATIC,11,236,75,8
PUSHBUTTON "Browse",IDC_SHADER_FX_CONF_BUTTON,128,246,47,14
EDITTEXT IDC_SHADER_FX_CONF_EDIT,11,246,113,14,ES_AUTOHSCROLL
END END
@ -293,7 +299,7 @@ BEGIN
VERTGUIDE, 94 VERTGUIDE, 94
VERTGUIDE, 175 VERTGUIDE, 175
TOPMARGIN, 6 TOPMARGIN, 6
BOTTOMMARGIN, 385 BOTTOMMARGIN, 439
HORZGUIDE, 194 HORZGUIDE, 194
HORZGUIDE, 297 HORZGUIDE, 297
END END

View File

@ -76,7 +76,13 @@
#define IDC_CRC_LEVEL 2071 #define IDC_CRC_LEVEL 2071
#define IDC_CRC_LEVEL_TEXT 2072 #define IDC_CRC_LEVEL_TEXT 2072
#define IDC_TC_DEPTH 2073 #define IDC_TC_DEPTH 2073
#define IDC_COLORSPACE 2075 #define IDC_COLORSPACE 2074
#define IDC_SHADER_FX_EDIT 2075
#define IDC_SHADER_FX_CONF_EDIT 2076
#define IDC_SHADER_FX_BUTTON 2077
#define IDC_SHADER_FX_CONF_BUTTON 2078
#define IDC_SHADER_FX_TEXT 2079
#define IDC_SHADER_FX_CONF_TEXT 2080
#define IDR_CONVERT_FX 10000 #define IDR_CONVERT_FX 10000
#define IDR_TFX_FX 10001 #define IDR_TFX_FX 10001
#define IDR_MERGE_FX 10002 #define IDR_MERGE_FX 10002
@ -95,7 +101,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 10013 #define _APS_NEXT_RESOURCE_VALUE 10013
#define _APS_NEXT_COMMAND_VALUE 32771 #define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 2074 #define _APS_NEXT_CONTROL_VALUE 2081
#define _APS_NEXT_SYMED_VALUE 5000 #define _APS_NEXT_SYMED_VALUE 5000
#endif #endif
#endif #endif