1
0
forked from 0ad/0ad

Add option to disable particles, based on patch by rogue-spectre. Fixes #1222.

This was SVN commit r11658.
This commit is contained in:
vts 2012-04-23 22:57:51 +00:00
parent 49883c2d57
commit f72bfb1cf1
7 changed files with 45 additions and 21 deletions

View File

@ -34,6 +34,7 @@ fancywater = true
shadows = true
shadowpcf = true
vsync = false
particles = true
nos3tc = false
noautomipmap = true

View File

@ -224,14 +224,14 @@
<object name="settingsDialogPanel"
style="StoneDialog"
type="image"
size="50%-180 50%-200 50%+180 50%+50"
size="50%-180 50%-200 50%+180 50%+80"
hidden="true"
>
<object type="text" style="TitleText" size="50%-96 -16 50%+96 16">Settings</object>
<object style="TranslucentPanelThinBorder"
type="image"
size="32 32 100%-32 100%-64"
size="32 32 100%-32 100%-70"
>
<!-- Settings / shadows -->
<object size="0 10 100%-80 35" type="text" style="RightLabelText" ghost="true">Enable Shadows</object>
@ -253,16 +253,23 @@
<action on="Load">if (renderer.fancyWater) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.fancyWater = this.checked;</action>
</object>
<!-- Settings / Particles -->
<object size="0 85 100%-80 110" type="text" style="RightLabelText" ghost="true">Enable Particles</object>
<object name="particlesCheckbox" size="100%-56 90 100%-30 115" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.particles) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.particles = this.checked;</action>
</object>
<!-- Settings / Music-->
<object size="0 85 100%-80 110" type="text" style="RightLabelText" ghost="true">Enable Music</object>
<object size="100%-56 90 100%-30 115" type="checkbox" style="StoneCrossBox" checked="true">
<object size="0 110 100%-80 135" type="text" style="RightLabelText" ghost="true">Enable Music</object>
<object size="100%-56 115 100%-30 140" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Press">if (this.checked) global.music.start(); else global.music.stop();</action>
</object>
<!-- Settings / Dev Overlay -->
<object size="0 110 100%-80 135" type="text" style="RightLabelText" ghost="true">Developer Overlay</object>
<object size="100%-56 115 100%-30 140" type="checkbox" style="StoneCrossBox" checked="false">
<object size="0 135 100%-80 160" type="text" style="RightLabelText" ghost="true">Developer Overlay</object>
<object size="100%-56 140 100%-30 165" type="checkbox" style="StoneCrossBox" checked="false">
<action on="Press">toggleDeveloperOverlay();</action>
</object>
</object>

View File

@ -38,6 +38,7 @@ bool g_PauseOnFocusLoss = false;
bool g_Shadows = false;
bool g_ShadowPCF = false;
bool g_FancyWater = false;
bool g_Particles = false;
float g_Gamma = 1.0f;
@ -77,6 +78,7 @@ static void LoadGlobals()
CFG_GET_USER_VAL("shadowpcf", Bool, g_ShadowPCF);
CFG_GET_USER_VAL("fancywater", Bool, g_FancyWater);
CFG_GET_USER_VAL("renderpath", String, g_RenderPath);
CFG_GET_USER_VAL("particles", Bool, g_Particles);
float gain = -1.0f;
CFG_GET_USER_VAL("sound.mastergain", Float, gain);

View File

@ -50,6 +50,8 @@ extern bool g_Shadows;
extern bool g_FancyWater;
// flag to switch on shadow PCF
extern bool g_ShadowPCF;
// flag to switch on particles rendering
extern bool g_Particles;
extern float g_Gamma;
// name of configured render path (depending on OpenGL extensions, this may not be

View File

@ -582,6 +582,7 @@ static void InitRenderer()
g_Renderer.SetOptionBool(CRenderer::OPT_FANCYWATER, g_FancyWater);
g_Renderer.SetRenderPath(CRenderer::GetRenderPathByName(g_RenderPath));
g_Renderer.SetOptionBool(CRenderer::OPT_SHADOWPCF, g_ShadowPCF);
g_Renderer.SetOptionBool(CRenderer::OPT_PARTICLES, g_Particles);
// create terrain related stuff
new CTerrainTextureManager;

View File

@ -408,11 +408,11 @@ CRenderer::CRenderer()
g_ProfileViewer.AddRootTable(&m->profileTable);
m_Width=0;
m_Height=0;
m_TerrainRenderMode=SOLID;
m_ModelRenderMode=SOLID;
m_ClearColor[0]=m_ClearColor[1]=m_ClearColor[2]=m_ClearColor[3]=0;
m_Width = 0;
m_Height = 0;
m_TerrainRenderMode = SOLID;
m_ModelRenderMode = SOLID;
m_ClearColor[0] = m_ClearColor[1] = m_ClearColor[2] = m_ClearColor[3] = 0;
m_DisplayFrustum = false;
m_DisplayTerrainPriorities = false;
@ -425,6 +425,7 @@ CRenderer::CRenderer()
m_Options.m_ShadowAlphaFix = true;
m_Options.m_ARBProgramShadow = true;
m_Options.m_ShadowPCF = false;
m_Options.m_Particles = false;
m_Options.m_PreferGLSL = false;
m_Options.m_ForceAlphaTest = false;
m_Options.m_GPUSkinning = false;
@ -449,7 +450,7 @@ CRenderer::CRenderer()
m_hCompositeAlphaMap = 0;
m_Stats.Reset();
AddLocalProperty(L"particles", &m_Options.m_Particles, false);
AddLocalProperty(L"fancyWater", &m_Options.m_FancyWater, false);
AddLocalProperty(L"horizonHeight", &m->skyManager.m_HorizonHeight, false);
AddLocalProperty(L"waterMurkiness", &m->waterManager.m_Murkiness, false);
@ -641,19 +642,22 @@ void CRenderer::SetOptionBool(enum Option opt,bool value)
{
switch (opt) {
case OPT_NOVBO:
m_Options.m_NoVBO=value;
m_Options.m_NoVBO = value;
break;
case OPT_SHADOWS:
m_Options.m_Shadows=value;
m_Options.m_Shadows = value;
MakeShadersDirty();
break;
case OPT_FANCYWATER:
m_Options.m_FancyWater=value;
m_Options.m_FancyWater = value;
break;
case OPT_SHADOWPCF:
m_Options.m_ShadowPCF=value;
m_Options.m_ShadowPCF = value;
MakeShadersDirty();
break;
case OPT_PARTICLES:
m_Options.m_Particles = value;
break;
default:
debug_warn(L"CRenderer::SetOptionBool: unknown option");
break;
@ -673,6 +677,8 @@ bool CRenderer::GetOptionBool(enum Option opt) const
return m_Options.m_FancyWater;
case OPT_SHADOWPCF:
return m_Options.m_ShadowPCF;
case OPT_PARTICLES:
return m_Options.m_Particles;
default:
debug_warn(L"CRenderer::GetOptionBool: unknown option");
break;
@ -1437,8 +1443,11 @@ void CRenderer::RenderSubmissions()
ogl_WarnIfError();
// particles are transparent so render after water
RenderParticles();
ogl_WarnIfError();
if (m_Options.m_Particles)
{
RenderParticles();
ogl_WarnIfError();
}
RenderSilhouettes(context);

View File

@ -77,7 +77,8 @@ public:
OPT_NOVBO,
OPT_SHADOWS,
OPT_FANCYWATER,
OPT_SHADOWPCF
OPT_SHADOWPCF,
OPT_PARTICLES
};
enum RenderPath {
@ -121,6 +122,7 @@ public:
bool m_ShadowAlphaFix;
bool m_ARBProgramShadow;
bool m_ShadowPCF;
bool m_Particles;
bool m_PreferGLSL;
bool m_ForceAlphaTest;
bool m_GPUSkinning;
@ -147,7 +149,7 @@ public:
void Resize(int width,int height);
// set/get boolean renderer option
void SetOptionBool(enum Option opt,bool value);
void SetOptionBool(enum Option opt, bool value);
bool GetOptionBool(enum Option opt) const;
void SetRenderPath(RenderPath rp);
RenderPath GetRenderPath() const { return m_Options.m_RenderPath; }