mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-02 09:03:37 +00:00
Add enableCoverage setting.
Not implemented for GLideNUI-wtl yet.
This commit is contained in:
parent
2233cf9f04
commit
47054eabc0
|
@ -45,6 +45,7 @@ void Config::resetToDefaults()
|
|||
generalEmulation.enableDitheringQuantization = 1;
|
||||
generalEmulation.rdramImageDitheringMode = BufferDitheringMode::bdmBlueNoise;
|
||||
generalEmulation.enableHWLighting = 0;
|
||||
generalEmulation.enableCoverage = 1;
|
||||
generalEmulation.enableCustomSettings = 1;
|
||||
generalEmulation.enableShadersStorage = 1;
|
||||
generalEmulation.enableLegacyBlending = 0;
|
||||
|
|
|
@ -60,6 +60,7 @@ struct Config
|
|||
u32 rdramImageDitheringMode;
|
||||
u32 enableLOD;
|
||||
u32 enableHWLighting;
|
||||
u32 enableCoverage;
|
||||
u32 enableCustomSettings;
|
||||
u32 enableShadersStorage;
|
||||
u32 enableLegacyBlending;
|
||||
|
|
|
@ -48,6 +48,7 @@ void _loadSettings(GlSettings & settings)
|
|||
config.generalEmulation.rdramImageDitheringMode = settings.value("rdramImageDitheringMode", config.generalEmulation.rdramImageDitheringMode).toInt();
|
||||
config.generalEmulation.enableLOD = settings.value("enableLOD", config.generalEmulation.enableLOD).toInt();
|
||||
config.generalEmulation.enableHWLighting = settings.value("enableHWLighting", config.generalEmulation.enableHWLighting).toInt();
|
||||
config.generalEmulation.enableCoverage = settings.value("enableCoverage", config.generalEmulation.enableCoverage).toInt();
|
||||
config.generalEmulation.enableShadersStorage = settings.value("enableShadersStorage", config.generalEmulation.enableShadersStorage).toInt();
|
||||
config.generalEmulation.enableLegacyBlending = settings.value("enableLegacyBlending", config.generalEmulation.enableLegacyBlending).toInt(); //ini only
|
||||
config.generalEmulation.enableHybridFilter = settings.value("enableHybridFilter", config.generalEmulation.enableHybridFilter).toInt(); //ini only
|
||||
|
@ -231,6 +232,7 @@ void writeSettings(const char * _strIniFolder)
|
|||
settings.setValue("rdramImageDitheringMode", config.generalEmulation.rdramImageDitheringMode);
|
||||
settings.setValue("enableLOD", config.generalEmulation.enableLOD);
|
||||
settings.setValue("enableHWLighting", config.generalEmulation.enableHWLighting);
|
||||
settings.setValue("enableCoverage", config.generalEmulation.enableCoverage);
|
||||
settings.setValue("enableShadersStorage", config.generalEmulation.enableShadersStorage);
|
||||
settings.setValue("enableLegacyBlending", config.generalEmulation.enableLegacyBlending); //ini only
|
||||
settings.setValue("enableHybridFilter", config.generalEmulation.enableHybridFilter); //ini only
|
||||
|
@ -432,6 +434,7 @@ void saveCustomRomSettings(const char * _strIniFolder, const char * _strRomName)
|
|||
WriteCustomSetting(generalEmulation, rdramImageDitheringMode);
|
||||
WriteCustomSetting(generalEmulation, enableLOD);
|
||||
WriteCustomSetting(generalEmulation, enableHWLighting);
|
||||
WriteCustomSetting(generalEmulation, enableCoverage);
|
||||
WriteCustomSetting(generalEmulation, enableShadersStorage);
|
||||
settings.endGroup();
|
||||
|
||||
|
|
|
@ -218,6 +218,7 @@ void ConfigDialog::_init(bool reInit, bool blockCustomSettings)
|
|||
// Emulation settings
|
||||
ui->emulateLodCheckBox->setChecked(config.generalEmulation.enableLOD != 0);
|
||||
ui->enableHWLightingCheckBox->setChecked(config.generalEmulation.enableHWLighting != 0);
|
||||
ui->enableCoverageCheckBox->setChecked(config.generalEmulation.enableCoverage != 0);
|
||||
ui->enableShadersStorageCheckBox->setChecked(config.generalEmulation.enableShadersStorage != 0);
|
||||
if (!blockCustomSettings)
|
||||
ui->customSettingsCheckBox->setChecked(config.generalEmulation.enableCustomSettings != 0);
|
||||
|
@ -555,6 +556,7 @@ void ConfigDialog::accept(bool justSave) {
|
|||
// Emulation settings
|
||||
config.generalEmulation.enableLOD = ui->emulateLodCheckBox->isChecked() ? 1 : 0;
|
||||
config.generalEmulation.enableHWLighting = ui->enableHWLightingCheckBox->isChecked() ? 1 : 0;
|
||||
config.generalEmulation.enableCoverage = ui->enableCoverageCheckBox->isChecked() ? 1 : 0;
|
||||
config.generalEmulation.enableShadersStorage = ui->enableShadersStorageCheckBox->isChecked() ? 1 : 0;
|
||||
config.generalEmulation.enableCustomSettings = ui->customSettingsCheckBox->isChecked() ? 1 : 0;
|
||||
|
||||
|
|
|
@ -47,6 +47,7 @@ void _loadSettings(QSettings & settings)
|
|||
config.generalEmulation.rdramImageDitheringMode = settings.value("rdramImageDitheringMode", config.generalEmulation.rdramImageDitheringMode).toInt();
|
||||
config.generalEmulation.enableLOD = settings.value("enableLOD", config.generalEmulation.enableLOD).toInt();
|
||||
config.generalEmulation.enableHWLighting = settings.value("enableHWLighting", config.generalEmulation.enableHWLighting).toInt();
|
||||
config.generalEmulation.enableCoverage = settings.value("enableCoverage", config.generalEmulation.enableCoverage).toInt();
|
||||
config.generalEmulation.enableShadersStorage = settings.value("enableShadersStorage", config.generalEmulation.enableShadersStorage).toInt();
|
||||
config.generalEmulation.enableLegacyBlending = settings.value("enableLegacyBlending", config.generalEmulation.enableLegacyBlending).toInt(); //ini only
|
||||
config.generalEmulation.enableHybridFilter = settings.value("enableHybridFilter", config.generalEmulation.enableHybridFilter).toInt(); //ini only
|
||||
|
@ -230,6 +231,7 @@ void writeSettings(const QString & _strIniFolder)
|
|||
settings.setValue("rdramImageDitheringMode", config.generalEmulation.rdramImageDitheringMode);
|
||||
settings.setValue("enableLOD", config.generalEmulation.enableLOD);
|
||||
settings.setValue("enableHWLighting", config.generalEmulation.enableHWLighting);
|
||||
settings.setValue("enableCoverage", config.generalEmulation.enableCoverage);
|
||||
settings.setValue("enableShadersStorage", config.generalEmulation.enableShadersStorage);
|
||||
settings.setValue("enableLegacyBlending", config.generalEmulation.enableLegacyBlending); //ini only
|
||||
settings.setValue("enableHybridFilter", config.generalEmulation.enableHybridFilter); //ini only
|
||||
|
@ -431,6 +433,7 @@ void saveCustomRomSettings(const QString & _strIniFolder, const char * _strRomNa
|
|||
WriteCustomSetting(generalEmulation, rdramImageDitheringMode);
|
||||
WriteCustomSetting(generalEmulation, enableLOD);
|
||||
WriteCustomSetting(generalEmulation, enableHWLighting);
|
||||
WriteCustomSetting(generalEmulation, enableCoverage);
|
||||
WriteCustomSetting(generalEmulation, enableShadersStorage);
|
||||
settings.endGroup();
|
||||
|
||||
|
|
|
@ -1143,6 +1143,16 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="enableCoverageCheckBox">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p><span style=" font-weight:600;">Enable pixel coverage calculation. </span></p><p>Enables approximated pixel coverage calculation. N64 uses pixel coverage for anti-aliasing and in some special blending modes. Some games have wire-frame mode aka 'pen and ink' mode. This mode also needs pixel coverage calculated. </p><p>[Recommended: Checked, unless performance is hurt]</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Enable pixel coverage calculation</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="enableShadersStorageCheckBox">
|
||||
<property name="toolTip">
|
||||
|
|
|
@ -16,6 +16,7 @@ namespace graphics {
|
|||
vecOptions.push_back(config.generalEmulation.enableDitheringPattern);
|
||||
vecOptions.push_back(config.generalEmulation.enableDitheringQuantization);
|
||||
vecOptions.push_back(config.generalEmulation.enableLOD);
|
||||
vecOptions.push_back(config.generalEmulation.enableCoverage);
|
||||
vecOptions.push_back(config.frameBufferEmulation.N64DepthCompare == Config::dcFast ? 1 : 0);
|
||||
vecOptions.push_back(config.frameBufferEmulation.N64DepthCompare == Config::dcCompatible ? 1 : 0);
|
||||
vecOptions.push_back(config.generalEmulation.enableLegacyBlending);
|
||||
|
|
|
@ -2824,13 +2824,12 @@ graphics::CombinerProgram * CombinerProgramBuilder::buildCombinerProgram(Combine
|
|||
if (g_cycleType <= G_CYC_2CYCLE)
|
||||
m_fragmentBlendMux->write(ssShader);
|
||||
|
||||
if (g_cycleType <= G_CYC_2CYCLE)
|
||||
if (g_cycleType <= G_CYC_2CYCLE && m_useCoverage)
|
||||
m_shaderCoverage->write(ssShader);
|
||||
else
|
||||
ssShader << "cvg = 1.0f; \n" << std::endl;
|
||||
|
||||
|
||||
|
||||
if (bUseTextures) {
|
||||
if (combinerInputs.usesTile(0))
|
||||
{
|
||||
|
@ -3027,6 +3026,7 @@ CombinerProgramBuilder::CombinerProgramBuilder(const opengl::GLInfo & _glinfo, o
|
|||
m_vertexShaderTexturedRect = _createVertexShader(m_vertexHeader.get(), m_vertexTexturedRect.get(), m_vertexEnd.get());
|
||||
m_vertexShaderTexturedTriangle = _createVertexShader(m_vertexHeader.get(), m_vertexTexturedTriangle.get(), m_vertexEnd.get());
|
||||
m_uniformFactory.reset(new CombinerProgramUniformFactory(_glinfo));
|
||||
m_useCoverage = (config.generalEmulation.enableCoverage != 0) && (_glinfo.dual_source_blending || _glinfo.ext_fetch || _glinfo.ext_fetch_arm);
|
||||
}
|
||||
|
||||
CombinerProgramBuilder::~CombinerProgramBuilder()
|
||||
|
|
|
@ -102,6 +102,7 @@ namespace glsl {
|
|||
GLuint m_vertexShaderTexturedTriangle;
|
||||
opengl::CachedUseProgram * m_useProgram;
|
||||
u32 m_combinerOptionsBits;
|
||||
bool m_useCoverage = false;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ namespace glsl {
|
|||
bool _saveCombinerKeys(const graphics::Combiners & _combiners) const;
|
||||
bool _loadFromCombinerKeys(graphics::Combiners & _combiners);
|
||||
|
||||
const u32 m_formatVersion = 0x2FU;
|
||||
const u32 m_formatVersion = 0x30U;
|
||||
const u32 m_keysFormatVersion = 0x04;
|
||||
const opengl::GLInfo & m_glinfo;
|
||||
opengl::CachedUseProgram * m_useProgram;
|
||||
|
|
|
@ -149,6 +149,8 @@ bool Config_SetDefault()
|
|||
assert(res == M64ERR_SUCCESS);
|
||||
res = ConfigSetDefaultBool(g_configVideoGliden64, "EnableHWLighting", config.generalEmulation.enableHWLighting, "Enable hardware per-pixel lighting.");
|
||||
assert(res == M64ERR_SUCCESS);
|
||||
res = ConfigSetDefaultBool(g_configVideoGliden64, "EnableCoverage", config.generalEmulation.enableCoverage, "Enable pixel coverage calculation. Used for better blending emulation and wire-frame mode. Needs fast GPU.");
|
||||
assert(res == M64ERR_SUCCESS);
|
||||
res = ConfigSetDefaultBool(g_configVideoGliden64, "EnableShadersStorage", config.generalEmulation.enableShadersStorage, "Use persistent storage for compiled shaders.");
|
||||
assert(res == M64ERR_SUCCESS);
|
||||
res = ConfigSetDefaultBool(g_configVideoGliden64, "EnableLegacyBlending", config.generalEmulation.enableLegacyBlending, "Do not use shaders to emulate N64 blending modes. Works faster on slow GPU. Can cause glitches.");
|
||||
|
@ -360,6 +362,8 @@ void Config_LoadCustomConfig()
|
|||
if (result == M64ERR_SUCCESS) config.generalEmulation.enableLOD = atoi(value);
|
||||
result = ConfigExternalGetParameter(fileHandle, sectionName, "generalEmulation\\enableHWLighting", value, sizeof(value));
|
||||
if (result == M64ERR_SUCCESS) config.generalEmulation.enableHWLighting = atoi(value);
|
||||
result = ConfigExternalGetParameter(fileHandle, sectionName, "generalEmulation\\enableCoverage", value, sizeof(value));
|
||||
if (result == M64ERR_SUCCESS) config.generalEmulation.enableCoverage = atoi(value);
|
||||
result = ConfigExternalGetParameter(fileHandle, sectionName, "generalEmulation\\enableShadersStorage", value, sizeof(value));
|
||||
if (result == M64ERR_SUCCESS) config.generalEmulation.enableShadersStorage = atoi(value);
|
||||
result = ConfigExternalGetParameter(fileHandle, sectionName, "generalEmulation\\enableLegacyBlending", value, sizeof(value));
|
||||
|
@ -483,6 +487,7 @@ void Config_LoadConfig()
|
|||
|
||||
config.generalEmulation.enableLOD = ConfigGetParamBool(g_configVideoGliden64, "EnableLOD");
|
||||
config.generalEmulation.enableHWLighting = ConfigGetParamBool(g_configVideoGliden64, "EnableHWLighting");
|
||||
config.generalEmulation.enableCoverage = ConfigGetParamBool(g_configVideoGliden64, "EnableCoverage");
|
||||
config.generalEmulation.enableShadersStorage = ConfigGetParamBool(g_configVideoGliden64, "EnableShadersStorage");
|
||||
config.generalEmulation.enableLegacyBlending = ConfigGetParamBool(g_configVideoGliden64, "EnableLegacyBlending");
|
||||
config.generalEmulation.enableHybridFilter = ConfigGetParamBool(g_configVideoGliden64, "EnableHybridFilter");
|
||||
|
|
Loading…
Reference in New Issue
Block a user