mirror of https://github.com/PCSX2/pcsx2.git
GSDX-UI: Add Mipmap combobox
Mipmapping is now supported on hardware renderers thanks to Gregory. Please report any observed hardware mipmapping issues on the forums (http://forums.pcsx2.net/Thread-New-feature-Needs-testing-GSdx-HW-mode-Experimental-mipmap-support) as potentially the HW mipmap code might still have some bugs.
This commit is contained in:
parent
253bd1aea3
commit
1547dd4215
|
@ -397,8 +397,8 @@ void populate_main_table(GtkWidget* main_table)
|
|||
GtkWidget* mipmap_label = left_label("Mipmap (Insert):");
|
||||
GtkWidget* mipmap_combo_box = CreateComboBoxFromVector(theApp.m_gs_hack, "mipmap");
|
||||
|
||||
AddTooltip(mipmap_label, IDC_MIPMAP);
|
||||
AddTooltip(mipmap_combo_box, IDC_MIPMAP);
|
||||
AddTooltip(mipmap_label, IDC_MIPMAP_SW);
|
||||
AddTooltip(mipmap_combo_box, IDC_MIPMAP_SW);
|
||||
|
||||
s_table_line = 0;
|
||||
InsertWidgetInTable(main_table, render_label, render_combo_box);
|
||||
|
|
|
@ -33,18 +33,17 @@ GSRendererHW::GSRendererHW(GSTextureCache* tc)
|
|||
, m_channel_shuffle(false)
|
||||
, m_lod(GSVector2i(0,0))
|
||||
{
|
||||
m_mipmap = theApp.GetConfigI("mipmap_hw");
|
||||
m_upscale_multiplier = theApp.GetConfigI("upscale_multiplier");
|
||||
m_large_framebuffer = theApp.GetConfigB("large_framebuffer");
|
||||
if (theApp.GetConfigB("UserHacks")) {
|
||||
m_userhacks_align_sprite_X = theApp.GetConfigB("UserHacks_align_sprite_X");
|
||||
m_userhacks_round_sprite_offset = theApp.GetConfigI("UserHacks_round_sprite_offset");
|
||||
m_userhacks_disable_gs_mem_clear = theApp.GetConfigB("UserHacks_DisableGsMemClear");
|
||||
m_mipmap = theApp.GetConfigI("UserHacks_mipmap");
|
||||
} else {
|
||||
m_userhacks_align_sprite_X = false;
|
||||
m_userhacks_round_sprite_offset = 0;
|
||||
m_userhacks_disable_gs_mem_clear = false;
|
||||
m_mipmap = 0;
|
||||
}
|
||||
|
||||
if (!m_upscale_multiplier) { //Custom Resolution
|
||||
|
|
|
@ -115,6 +115,8 @@ const char* dialog_message(int ID, bool* updateText) {
|
|||
case IDC_SWTHREADS:
|
||||
case IDC_SWTHREADS_EDIT:
|
||||
return "Number of rendering threads: 0 for single thread, 2 or more for multithread (1 is for debugging)";
|
||||
case IDC_MIPMAP_SW:
|
||||
return "Enables mipmapping, which some games require to render correctly.";
|
||||
case IDC_SHADEBOOST:
|
||||
return "Allows brightness, contrast and saturation to be manually adjusted.";
|
||||
case IDC_SHADER_FX:
|
||||
|
@ -141,8 +143,11 @@ const char* dialog_message(int ID, bool* updateText) {
|
|||
// Exclusive for Hardware Renderer
|
||||
case IDC_PRELOAD_GS:
|
||||
return "Uploads GS data when rendering a new frame to reproduce some effects accurately. Fixes black screen issues in games like Armored Core: Last Raven.";
|
||||
case IDC_MIPMAP:
|
||||
return "Enables mipmapping, which some games require to render correctly.";
|
||||
case IDC_MIPMAP_HW:
|
||||
return "Control the accuracy level of the mipmapping emulation\n\n"
|
||||
"Off:\nMipmapping emulation is disabled.\n\n"
|
||||
"Basic (Fast):\nPartially emulates mipmapping, performance impact is negligent at most cases.\n\n"
|
||||
"Full (Slow):\nCompletely emulates the mipmapping function of the GS, might significantly impact performance.";
|
||||
case IDC_FAST_TC_INV:
|
||||
return "By default, the texture cache handles partial invalidations. Unfortunately it is very costly to compute CPU wise."
|
||||
"\n\nThis hack replaces the partial invalidation with a complete deletion of the texture to reduce the CPU load.\n\nIt helps snowblind engine game.";
|
||||
|
|
|
@ -70,7 +70,8 @@ enum {
|
|||
IDC_SHADEBOOST,
|
||||
IDC_SHADER_FX,
|
||||
IDC_FXAA,
|
||||
IDC_MIPMAP,
|
||||
IDC_MIPMAP_SW,
|
||||
IDC_MIPMAP_HW,
|
||||
IDC_PRELOAD_GS,
|
||||
IDC_FAST_TC_INV,
|
||||
IDC_LARGE_FB,
|
||||
|
|
|
@ -145,6 +145,7 @@ void GSSettingsDlg::OnInit()
|
|||
|
||||
ComboBoxInit(IDC_ADAPTER, adapter_settings, adapter_sel);
|
||||
ComboBoxInit(IDC_OPENCL_DEVICE, m_ocl_devs, ocl_sel);
|
||||
ComboBoxInit(IDC_MIPMAP_HW, theApp.m_gs_hw_mipmapping, theApp.GetConfigI("mipmap_hw"));
|
||||
UpdateRenderers();
|
||||
|
||||
ComboBoxInit(IDC_INTERLACE, theApp.m_gs_interlace, theApp.GetConfigI("interlace"));
|
||||
|
@ -158,8 +159,8 @@ void GSSettingsDlg::OnInit()
|
|||
CheckDlgButton(m_hWnd, IDC_LARGE_FB, theApp.GetConfigB("large_framebuffer"));
|
||||
CheckDlgButton(m_hWnd, IDC_LOGZ, theApp.GetConfigB("logz"));
|
||||
CheckDlgButton(m_hWnd, IDC_FBA, theApp.GetConfigB("fba"));
|
||||
CheckDlgButton(m_hWnd, IDC_MIPMAP_SW, theApp.GetConfigB("mipmap"));
|
||||
CheckDlgButton(m_hWnd, IDC_AA1, theApp.GetConfigB("aa1"));
|
||||
CheckDlgButton(m_hWnd, IDC_MIPMAP, theApp.GetConfigB("mipmap"));
|
||||
CheckDlgButton(m_hWnd, IDC_ACCURATE_DATE, theApp.GetConfigB("accurate_date"));
|
||||
|
||||
// Hacks
|
||||
|
@ -181,7 +182,8 @@ void GSSettingsDlg::OnInit()
|
|||
AddTooltip(IDC_ACCURATE_BLEND_UNIT);
|
||||
AddTooltip(IDC_AFCOMBO);
|
||||
AddTooltip(IDC_AA1);
|
||||
AddTooltip(IDC_MIPMAP);
|
||||
AddTooltip(IDC_MIPMAP_HW);
|
||||
AddTooltip(IDC_MIPMAP_SW);
|
||||
AddTooltip(IDC_SWTHREADS);
|
||||
AddTooltip(IDC_SWTHREADS_EDIT);
|
||||
AddTooltip(IDC_FBA);
|
||||
|
@ -277,6 +279,11 @@ bool GSSettingsDlg::OnCommand(HWND hWnd, UINT id, UINT code)
|
|||
theApp.SetConfig("interlace", (int)data);
|
||||
}
|
||||
|
||||
if (ComboBoxGetSelData(IDC_MIPMAP_HW, data))
|
||||
{
|
||||
theApp.SetConfig("mipmap_hw", (int)data);
|
||||
}
|
||||
|
||||
if(ComboBoxGetSelData(IDC_UPSCALE_MULTIPLIER, data))
|
||||
{
|
||||
theApp.SetConfig("upscale_multiplier", (int)data);
|
||||
|
@ -306,12 +313,12 @@ bool GSSettingsDlg::OnCommand(HWND hWnd, UINT id, UINT code)
|
|||
theApp.SetConfig("MaxAnisotropy", (int)data);
|
||||
}
|
||||
|
||||
theApp.SetConfig("mipmap", (int)IsDlgButtonChecked(m_hWnd, IDC_MIPMAP_SW));
|
||||
theApp.SetConfig("paltex", (int)IsDlgButtonChecked(m_hWnd, IDC_PALTEX));
|
||||
theApp.SetConfig("large_framebuffer", (int)IsDlgButtonChecked(m_hWnd, IDC_LARGE_FB));
|
||||
theApp.SetConfig("logz", (int)IsDlgButtonChecked(m_hWnd, IDC_LOGZ));
|
||||
theApp.SetConfig("fba", (int)IsDlgButtonChecked(m_hWnd, IDC_FBA));
|
||||
theApp.SetConfig("aa1", (int)IsDlgButtonChecked(m_hWnd, IDC_AA1));
|
||||
theApp.SetConfig("mipmap", (int)IsDlgButtonChecked(m_hWnd, IDC_MIPMAP));
|
||||
theApp.SetConfig("accurate_date", (int)IsDlgButtonChecked(m_hWnd, IDC_ACCURATE_DATE));
|
||||
theApp.SetConfig("UserHacks", (int)IsDlgButtonChecked(m_hWnd, IDC_HACKS_ENABLED));
|
||||
|
||||
|
@ -419,6 +426,8 @@ void GSSettingsDlg::UpdateControls()
|
|||
ShowWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT), ogl ? SW_SHOW : SW_HIDE);
|
||||
ShowWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT_TEXT), ogl ? SW_SHOW : SW_HIDE);
|
||||
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_MIPMAP_HW), hw);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_MIPMAP_HW_TEXT), hw);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_CRC_LEVEL), hw);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_LARGE_FB), integer_scaling != 1 && hw);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_CRC_LEVEL_TEXT), hw);
|
||||
|
@ -447,8 +456,8 @@ void GSSettingsDlg::UpdateControls()
|
|||
EnableWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT_TEXT), ogl && hw);
|
||||
|
||||
// Software mode settings
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_MIPMAP_SW), sw);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_AA1), sw);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_MIPMAP), sw);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_SWTHREADS_TEXT), sw);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_SWTHREADS_EDIT), sw);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_SWTHREADS), sw);
|
||||
|
|
|
@ -214,6 +214,10 @@ void GSdxApp::Init()
|
|||
m_gs_hack.push_back(GSSetting(1, "Half", ""));
|
||||
m_gs_hack.push_back(GSSetting(2, "Full", ""));
|
||||
|
||||
m_gs_hw_mipmapping.push_back(GSSetting(0, "Off", ""));
|
||||
m_gs_hw_mipmapping.push_back(GSSetting(1, "Basic", "Fast"));
|
||||
m_gs_hw_mipmapping.push_back(GSSetting(2, "Full", "Slow"));
|
||||
|
||||
m_gs_crc_level.push_back(GSSetting(0 , "None", "Debug"));
|
||||
m_gs_crc_level.push_back(GSSetting(1 , "Minimum", "Debug"));
|
||||
m_gs_crc_level.push_back(GSSetting(2 , "Partial", "OpenGL Recommended"));
|
||||
|
@ -303,6 +307,7 @@ void GSdxApp::Init()
|
|||
m_default_configuration["linear_present"] = "1";
|
||||
m_default_configuration["MaxAnisotropy"] = "0";
|
||||
m_default_configuration["mipmap"] = "1";
|
||||
m_default_configuration["mipmap_hw"] = "0";
|
||||
m_default_configuration["ModeHeight"] = "480";
|
||||
m_default_configuration["ModeWidth"] = "640";
|
||||
m_default_configuration["NTSC_Saturation"] = "1";
|
||||
|
@ -347,7 +352,6 @@ void GSdxApp::Init()
|
|||
m_default_configuration["UserHacks_DisablePartialInvalidation"] = "0";
|
||||
m_default_configuration["UserHacks_HalfPixelOffset"] = "0";
|
||||
m_default_configuration["UserHacks_merge_pp_sprite"] = "0";
|
||||
m_default_configuration["UserHacks_mipmap"] = "0";
|
||||
m_default_configuration["UserHacks_MSAA"] = "0";
|
||||
m_default_configuration["UserHacks_unscale_point_line"] = "0";
|
||||
m_default_configuration["UserHacks_round_sprite_offset"] = "0";
|
||||
|
|
|
@ -71,6 +71,7 @@ public:
|
|||
vector<GSSetting> m_gs_filter;
|
||||
vector<GSSetting> m_gs_gl_ext;
|
||||
vector<GSSetting> m_gs_hack;
|
||||
vector<GSSetting> m_gs_hw_mipmapping;
|
||||
vector<GSSetting> m_gs_crc_level;
|
||||
vector<GSSetting> m_gs_acc_blend_level;
|
||||
vector<GSSetting> m_gs_tv_shaders;
|
||||
|
|
|
@ -222,7 +222,7 @@ BEGIN
|
|||
CONTROL "Windowed",IDC_WINDOWED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,129,157,49,10
|
||||
END
|
||||
|
||||
IDD_CONFIG DIALOGEX 0, 0, 243, 373
|
||||
IDD_CONFIG DIALOGEX 0, 0, 243, 389
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "GSdx Settings"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
|
@ -240,7 +240,7 @@ BEGIN
|
|||
COMBOBOX IDC_OPENCL_DEVICE,71,100,166,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "Interlacing (F5):",IDC_STATIC,6,87,52,8
|
||||
COMBOBOX IDC_INTERLACE,71,85,166,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
GROUPBOX "Hardware Mode Settings",IDC_STATIC,6,116,231,152,BS_CENTER
|
||||
GROUPBOX "Hardware Mode Settings",IDC_STATIC,6,116,231,168,BS_CENTER
|
||||
CONTROL "Allow 8-Bit Textures",IDC_PALTEX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,128,90,10
|
||||
LTEXT "Internal Resolution:",IDC_UPSCALE_MULTIPLIER_TEXT,22,144,79,8
|
||||
COMBOBOX IDC_UPSCALE_MULTIPLIER,105,142,127,98,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
|
@ -253,26 +253,28 @@ BEGIN
|
|||
COMBOBOX IDC_FILTER,105,174,127,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "Anisotropic Filtering:",IDC_AFCOMBO_TEXT,22,192,79,8
|
||||
COMBOBOX IDC_AFCOMBO,105,190,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "CRC Hack Level:",IDC_CRC_LEVEL_TEXT,22,208,79,8
|
||||
COMBOBOX IDC_CRC_LEVEL,105,206,127,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Enable HW Hacks",IDC_HACKS_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,223,71,10
|
||||
PUSHBUTTON "Configure Hacks",IDC_HACKSBUTTON,105,221,127,14
|
||||
CONTROL "Accurate Date",IDC_ACCURATE_DATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,239,72,8
|
||||
LTEXT "Mipmapping (Ins):",IDC_MIPMAP_HW_TEXT,22,208,79,8
|
||||
COMBOBOX IDC_MIPMAP_HW,105,206,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "CRC Hack Level:",IDC_CRC_LEVEL_TEXT,22,224,79,8
|
||||
COMBOBOX IDC_CRC_LEVEL,105,222,127,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Enable HW Hacks",IDC_HACKS_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,239,71,10
|
||||
PUSHBUTTON "Configure Hacks",IDC_HACKSBUTTON,105,237,127,14
|
||||
CONTROL "Accurate Date",IDC_ACCURATE_DATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,255,72,8
|
||||
CONTROL "Large Framebuffer",IDC_LARGE_FB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,105,128,90,10
|
||||
LTEXT "Blending Unit Accuracy:",IDC_ACCURATE_BLEND_UNIT_TEXT,22,252,79,10
|
||||
COMBOBOX IDC_ACCURATE_BLEND_UNIT,105,251,127,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Logarithmic Z",IDC_LOGZ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,239,90,8
|
||||
CONTROL "Alpha Correction",IDC_FBA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,105,239,74,8
|
||||
CONTROL "Mipmapping",IDC_MIPMAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,304,90,8
|
||||
GROUPBOX "Software Mode Settings",IDC_STATIC,6,275,231,40,BS_CENTER
|
||||
CONTROL "Edge Anti-aliasing (AA1)",IDC_AA1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,287,91,10
|
||||
LTEXT "Rendering threads:",IDC_SWTHREADS_TEXT,124,288,80,8
|
||||
EDITTEXT IDC_SWTHREADS_EDIT,198,286,34,13,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_SWTHREADS,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,221,285,11,14
|
||||
PUSHBUTTON "Configure",IDC_SHADEBUTTON,105,323,127,14
|
||||
LTEXT "Shader Configuration:",IDC_STATIC,11,326,90,14
|
||||
DEFPUSHBUTTON "OK",IDOK,69,353,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,125,353,50,14
|
||||
LTEXT "Blending Unit Accuracy:",IDC_ACCURATE_BLEND_UNIT_TEXT,22,268,79,10
|
||||
COMBOBOX IDC_ACCURATE_BLEND_UNIT,105,267,127,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Logarithmic Z",IDC_LOGZ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,255,90,8
|
||||
CONTROL "Alpha Correction",IDC_FBA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,105,255,74,8
|
||||
CONTROL "Mipmapping",IDC_MIPMAP_SW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,320,90,8
|
||||
GROUPBOX "Software Mode Settings",IDC_STATIC,6,291,231,40,BS_CENTER
|
||||
CONTROL "Edge Anti-aliasing (AA1)",IDC_AA1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,303,91,10
|
||||
LTEXT "Rendering threads:",IDC_SWTHREADS_TEXT,124,304,80,8
|
||||
EDITTEXT IDC_SWTHREADS_EDIT,198,302,34,13,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_SWTHREADS,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,221,301,11,14
|
||||
PUSHBUTTON "Configure",IDC_SHADEBUTTON,105,339,127,14
|
||||
LTEXT "Shader Configuration:",IDC_STATIC,11,342,90,14
|
||||
DEFPUSHBUTTON "OK",IDOK,69,369,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,125,369,50,14
|
||||
END
|
||||
|
||||
|
||||
|
|
|
@ -98,13 +98,15 @@
|
|||
#define IDC_SHADER_FX_CONF_TEXT 2094
|
||||
#define IDC_CUSTOM_TEXT 2095
|
||||
#define IDC_UPSCALE_MULTIPLIER_TEXT 2096
|
||||
#define IDC_MIPMAP 2097
|
||||
#define IDC_PRELOAD_GS 2098
|
||||
#define IDC_TVSHADER 2099
|
||||
#define IDC_FAST_TC_INV 2101
|
||||
#define IDC_LARGE_FB 2102
|
||||
#define IDC_AUTO_FLUSH 2103
|
||||
#define IDC_UNSCALE_POINT_LINE 2104
|
||||
#define IDC_MIPMAP_HW 2097
|
||||
#define IDC_MIPMAP_HW_TEXT 2098
|
||||
#define IDC_MIPMAP_SW 2099
|
||||
#define IDC_PRELOAD_GS 2100
|
||||
#define IDC_TVSHADER 2101
|
||||
#define IDC_FAST_TC_INV 2102
|
||||
#define IDC_LARGE_FB 2103
|
||||
#define IDC_AUTO_FLUSH 2104
|
||||
#define IDC_UNSCALE_POINT_LINE 2105
|
||||
#define IDR_CONVERT_FX 10000
|
||||
#define IDR_TFX_FX 10001
|
||||
#define IDR_MERGE_FX 10002
|
||||
|
@ -123,7 +125,7 @@
|
|||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 10013
|
||||
#define _APS_NEXT_COMMAND_VALUE 32771
|
||||
#define _APS_NEXT_CONTROL_VALUE 2103
|
||||
#define _APS_NEXT_CONTROL_VALUE 2106
|
||||
#define _APS_NEXT_SYMED_VALUE 5000
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue