mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-10 16:19:28 +01:00
fix Issue 3539
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6622 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
670192e568
commit
9d30d1348e
@ -58,7 +58,7 @@ void GetPixelShaderId(PIXELSHADERUID *uid, DSTALPHA_MODE dstAlphaMode)
|
|||||||
for (int i = 0; i < 8; i += 2)
|
for (int i = 0; i < 8; i += 2)
|
||||||
((u8*)&uid->values[1])[i / 2] = (bpmem.tevksel[i].hex & 0xf) | ((bpmem.tevksel[i + 1].hex & 0xf) << 4);
|
((u8*)&uid->values[1])[i / 2] = (bpmem.tevksel[i].hex & 0xf) | ((bpmem.tevksel[i + 1].hex & 0xf) << 4);
|
||||||
|
|
||||||
u32 enableZTexture = (!bpmem.zcontrol.zcomploc && bpmem.zmode.testenable && bpmem.zmode.updateenable)?1:0;
|
u32 enableZTexture = (bpmem.ztex2.op != ZTEXTURE_DISABLE && !bpmem.zcontrol.zcomploc && bpmem.zmode.testenable && bpmem.zmode.updateenable) || g_ActiveConfig.bEnablePerPixelDepth ? 1 : 0;
|
||||||
|
|
||||||
uid->values[2] = (u32)bpmem.fog.c_proj_fsel.fsel |
|
uid->values[2] = (u32)bpmem.fog.c_proj_fsel.fsel |
|
||||||
((u32)bpmem.fog.c_proj_fsel.proj << 3) |
|
((u32)bpmem.fog.c_proj_fsel.proj << 3) |
|
||||||
@ -466,7 +466,7 @@ const char *GeneratePixelShaderCode(DSTALPHA_MODE dstAlphaMode, API_TYPE ApiType
|
|||||||
nIndirectStagesUsed |= 1 << bpmem.tevind[i].bt;
|
nIndirectStagesUsed |= 1 << bpmem.tevind[i].bt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DepthTextureEnable = bpmem.ztex2.op != ZTEXTURE_DISABLE && !bpmem.zcontrol.zcomploc && bpmem.zmode.testenable && bpmem.zmode.updateenable;
|
DepthTextureEnable = (bpmem.ztex2.op != ZTEXTURE_DISABLE && !bpmem.zcontrol.zcomploc && bpmem.zmode.testenable && bpmem.zmode.updateenable) || g_ActiveConfig.bEnablePerPixelDepth ;
|
||||||
// Declare samplers
|
// Declare samplers
|
||||||
|
|
||||||
if(ApiType != API_D3D11)
|
if(ApiType != API_D3D11)
|
||||||
@ -819,6 +819,8 @@ const char *GeneratePixelShaderCode(DSTALPHA_MODE dstAlphaMode, API_TYPE ApiType
|
|||||||
if (DepthTextureEnable)
|
if (DepthTextureEnable)
|
||||||
{
|
{
|
||||||
// use the texture input of the last texture stage (textemp), hopefully this has been read and is in correct format...
|
// use the texture input of the last texture stage (textemp), hopefully this has been read and is in correct format...
|
||||||
|
if (bpmem.ztex2.op != ZTEXTURE_DISABLE && !bpmem.zcontrol.zcomploc && bpmem.zmode.testenable && bpmem.zmode.updateenable)
|
||||||
|
{
|
||||||
if (bpmem.ztex2.op == ZTEXTURE_ADD)
|
if (bpmem.ztex2.op == ZTEXTURE_ADD)
|
||||||
WRITE(p, "zCoord = dot("I_ZBIAS"[0].xyzw, textemp.xyzw) + "I_ZBIAS"[1].w + zCoord;\n");
|
WRITE(p, "zCoord = dot("I_ZBIAS"[0].xyzw, textemp.xyzw) + "I_ZBIAS"[1].w + zCoord;\n");
|
||||||
else
|
else
|
||||||
@ -828,6 +830,7 @@ const char *GeneratePixelShaderCode(DSTALPHA_MODE dstAlphaMode, API_TYPE ApiType
|
|||||||
WRITE(p, "zCoord = zCoord * (16777215.0f/16777216.0f);\n");
|
WRITE(p, "zCoord = zCoord * (16777215.0f/16777216.0f);\n");
|
||||||
WRITE(p, "zCoord = frac(zCoord);\n");
|
WRITE(p, "zCoord = frac(zCoord);\n");
|
||||||
WRITE(p, "zCoord = zCoord * (16777216.0f/16777215.0f);\n");
|
WRITE(p, "zCoord = zCoord * (16777216.0f/16777215.0f);\n");
|
||||||
|
}
|
||||||
WRITE(p, "depth = zCoord;\n");
|
WRITE(p, "depth = zCoord;\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,6 +80,7 @@ void VideoConfig::Load(const char *ini_file)
|
|||||||
iniFile.Get("Settings", "AnaglyphStereoSeparation", &iAnaglyphStereoSeparation, 200);
|
iniFile.Get("Settings", "AnaglyphStereoSeparation", &iAnaglyphStereoSeparation, 200);
|
||||||
iniFile.Get("Settings", "AnaglyphFocalAngle", &iAnaglyphFocalAngle, 0);
|
iniFile.Get("Settings", "AnaglyphFocalAngle", &iAnaglyphFocalAngle, 0);
|
||||||
iniFile.Get("Settings", "EnablePixelLigting", &bEnablePixelLigting, 0);
|
iniFile.Get("Settings", "EnablePixelLigting", &bEnablePixelLigting, 0);
|
||||||
|
iniFile.Get("Settings", "EnablePerPixelDepth", &bEnablePerPixelDepth, 0);
|
||||||
|
|
||||||
iniFile.Get("Settings", "ShowShaderErrors", &bShowShaderErrors, 0);
|
iniFile.Get("Settings", "ShowShaderErrors", &bShowShaderErrors, 0);
|
||||||
iniFile.Get("Settings", "MSAA", &iMultisampleMode, 0);
|
iniFile.Get("Settings", "MSAA", &iMultisampleMode, 0);
|
||||||
@ -193,6 +194,8 @@ void VideoConfig::Save(const char *ini_file)
|
|||||||
iniFile.Set("Settings", "AnaglyphStereoSeparation", iAnaglyphStereoSeparation);
|
iniFile.Set("Settings", "AnaglyphStereoSeparation", iAnaglyphStereoSeparation);
|
||||||
iniFile.Set("Settings", "AnaglyphFocalAngle", iAnaglyphFocalAngle);
|
iniFile.Set("Settings", "AnaglyphFocalAngle", iAnaglyphFocalAngle);
|
||||||
iniFile.Set("Settings", "EnablePixelLigting", bEnablePixelLigting);
|
iniFile.Set("Settings", "EnablePixelLigting", bEnablePixelLigting);
|
||||||
|
iniFile.Set("Settings", "EnablePerPixelDepth", bEnablePerPixelDepth);
|
||||||
|
|
||||||
|
|
||||||
iniFile.Set("Settings", "ShowEFBCopyRegions", bShowEFBCopyRegions);
|
iniFile.Set("Settings", "ShowEFBCopyRegions", bShowEFBCopyRegions);
|
||||||
iniFile.Set("Settings", "ShowShaderErrors", bShowShaderErrors);
|
iniFile.Set("Settings", "ShowShaderErrors", bShowShaderErrors);
|
||||||
|
@ -131,6 +131,7 @@ struct VideoConfig
|
|||||||
float fAspectRatioHackW, fAspectRatioHackH;
|
float fAspectRatioHackW, fAspectRatioHackH;
|
||||||
bool bZTPSpeedHack; // The Legend of Zelda: Twilight Princess
|
bool bZTPSpeedHack; // The Legend of Zelda: Twilight Princess
|
||||||
bool bEnablePixelLigting;
|
bool bEnablePixelLigting;
|
||||||
|
bool bEnablePerPixelDepth;
|
||||||
|
|
||||||
int iLog; // CONF_ bits
|
int iLog; // CONF_ bits
|
||||||
int iSaveTargetId;
|
int iSaveTargetId;
|
||||||
|
@ -67,6 +67,7 @@ wxString aa_tooltip = wxT("Reduces the amount of aliasing caused by rasterizing
|
|||||||
wxString native_mips_tooltip = wxT("Loads native mipmaps instead of generating them.\nLoading native mipmaps is the more accurate behavior, but might also decrease performance (your mileage might vary though).");
|
wxString native_mips_tooltip = wxT("Loads native mipmaps instead of generating them.\nLoading native mipmaps is the more accurate behavior, but might also decrease performance (your mileage might vary though).");
|
||||||
wxString scaled_efb_copy_tooltip = wxT("Uses the high-resolution render buffer for EFB copies instead of scaling them down to native resolution.\nVastly improves visual quality in games which use EFB copies but might cause glitches in some games.");
|
wxString scaled_efb_copy_tooltip = wxT("Uses the high-resolution render buffer for EFB copies instead of scaling them down to native resolution.\nVastly improves visual quality in games which use EFB copies but might cause glitches in some games.");
|
||||||
wxString pixel_lighting_tooltip = wxT("Calculates lighting of 3D graphics on a per-pixel basis rather than per vertex.\nThis is the more accurate behavior but reduces performance.");
|
wxString pixel_lighting_tooltip = wxT("Calculates lighting of 3D graphics on a per-pixel basis rather than per vertex.\nThis is the more accurate behavior but reduces performance.");
|
||||||
|
wxString pixel_depth_tooltip = wxT("");
|
||||||
wxString force_filtering_tooltip = wxT("Forces bilinear texture filtering even if the game explicitly disabled it.\nImproves texture quality (especially when using a high internal resolution) but causes glitches in some games.");
|
wxString force_filtering_tooltip = wxT("Forces bilinear texture filtering even if the game explicitly disabled it.\nImproves texture quality (especially when using a high internal resolution) but causes glitches in some games.");
|
||||||
wxString _3d_vision_tooltip = wxT("");
|
wxString _3d_vision_tooltip = wxT("");
|
||||||
wxString internal_res_tooltip = wxT("Specifies the resolution used to render at.\nA high resolution will improve visual quality a lot but is also quite heavy on performance and might cause glitches in a very limited number of games.\nAuto (performance): Uses the display resolution to render at. This is slightly faster than integral scaling, but might cause visual glitches in a small number of games.\nAuto (accuracy): Uses a multiple of the native resolution to render at. Visual quality compared to the other automatic resolution is similar and a matter of personal preference.\nThe other options specify a fixed resolution and can be used to further increase visual quality.");
|
wxString internal_res_tooltip = wxT("Specifies the resolution used to render at.\nA high resolution will improve visual quality a lot but is also quite heavy on performance and might cause glitches in a very limited number of games.\nAuto (performance): Uses the display resolution to render at. This is slightly faster than integral scaling, but might cause visual glitches in a small number of games.\nAuto (accuracy): Uses a multiple of the native resolution to render at. Visual quality compared to the other automatic resolution is similar and a matter of personal preference.\nThe other options specify a fixed resolution and can be used to further increase visual quality.");
|
||||||
@ -202,6 +203,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
|
|||||||
szr_enh->Add(new SettingCheckBox(page_general, wxT("Load Native Mipmaps"), native_mips_tooltip, vconfig.bUseNativeMips));
|
szr_enh->Add(new SettingCheckBox(page_general, wxT("Load Native Mipmaps"), native_mips_tooltip, vconfig.bUseNativeMips));
|
||||||
szr_enh->Add(new SettingCheckBox(page_general, wxT("EFB Scaled Copy"), scaled_efb_copy_tooltip, vconfig.bCopyEFBScaled));
|
szr_enh->Add(new SettingCheckBox(page_general, wxT("EFB Scaled Copy"), scaled_efb_copy_tooltip, vconfig.bCopyEFBScaled));
|
||||||
szr_enh->Add(new SettingCheckBox(page_general, wxT("Pixel Lighting"), pixel_lighting_tooltip, vconfig.bEnablePixelLigting));
|
szr_enh->Add(new SettingCheckBox(page_general, wxT("Pixel Lighting"), pixel_lighting_tooltip, vconfig.bEnablePixelLigting));
|
||||||
|
szr_enh->Add(new SettingCheckBox(page_general, wxT("Pixel Depth"), pixel_depth_tooltip, vconfig.bEnablePerPixelDepth));
|
||||||
szr_enh->Add(new SettingCheckBox(page_general, wxT("Force Bi/Trilinear Filtering"), force_filtering_tooltip, vconfig.bForceFiltering));
|
szr_enh->Add(new SettingCheckBox(page_general, wxT("Force Bi/Trilinear Filtering"), force_filtering_tooltip, vconfig.bForceFiltering));
|
||||||
|
|
||||||
if (vconfig.backend_info.bSupports3DVision)
|
if (vconfig.backend_info.bSupports3DVision)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user