Adds render debug modes.

Tested By: Langbart
Differential Revision: https://code.wildfiregames.com/D4311
This was SVN commit r25992.
This commit is contained in:
vladislavbelov
2021-11-12 11:22:18 +00:00
parent dc361048aa
commit 36eb92f9a4
19 changed files with 288 additions and 67 deletions
+3
View File
@@ -56,6 +56,9 @@ X(MODE_SHADOWCAST)
X(MODE_SILHOUETTEDISPLAY)
X(MODE_SILHOUETTEOCCLUDER)
X(MODE_WIREFRAME)
X(RENDER_DEBUG_MODE)
X(RENDER_DEBUG_MODE_AO)
X(RENDER_DEBUG_MODE_NONE)
X(SHADOWS_CASCADE_COUNT)
X(SYS_HAS_ARB)
X(SYS_HAS_GLSL)
+3
View File
@@ -515,6 +515,9 @@ void CRenderer::ReloadShaders()
#endif
}
m->globalContext.Add(str_RENDER_DEBUG_MODE,
RenderDebugModeEnum::ToString(g_RenderingOptions.GetRenderDebugMode()));
if (g_RenderingOptions.GetPreferGLSL() && g_RenderingOptions.GetFog())
m->globalContext.Add(str_USE_FOG, str_1);
+31 -1
View File
@@ -22,6 +22,7 @@
#include "ps/CLogger.h"
#include "ps/ConfigDB.h"
#include "ps/CStr.h"
#include "ps/CStrInternStatic.h"
#include "renderer/Renderer.h"
#include "renderer/PostprocManager.h"
#include "renderer/ShadowMap.h"
@@ -74,6 +75,29 @@ CStr8 RenderPathEnum::ToString(RenderPath path)
return "default"; // Silence warning about reaching end of non-void function.
}
RenderDebugMode RenderDebugModeEnum::FromString(const CStr8& name)
{
if (name == str_RENDER_DEBUG_MODE_NONE.c_str())
return RenderDebugMode::NONE;
if (name == str_RENDER_DEBUG_MODE_AO.c_str())
return RenderDebugMode::AO;
LOGWARNING("Unknown render debug mode %s", name.c_str());
return RenderDebugMode::NONE;
}
CStrIntern RenderDebugModeEnum::ToString(RenderDebugMode mode)
{
switch (mode)
{
case RenderDebugMode::AO:
return str_RENDER_DEBUG_MODE_AO;
default:
break;
}
return str_RENDER_DEBUG_MODE_NONE;
}
CRenderingOptions::CRenderingOptions() : m_ConfigHooks(new ConfigHooks())
{
m_RenderPath = RenderPath::DEFAULT;
@@ -243,10 +267,16 @@ void CRenderingOptions::SetPreferGLSL(bool value)
g_Renderer.RecomputeSystemShaderDefines();
}
void CRenderingOptions::SetRenderPath(RenderPath value)
{
m_RenderPath = value;
if (CRenderer::IsInitialised())
g_Renderer.SetRenderPath(m_RenderPath);
}
void CRenderingOptions::SetRenderDebugMode(RenderDebugMode value)
{
m_RenderDebugMode = value;
if (CRenderer::IsInitialised())
g_Renderer.MakeShadersDirty();
}
+15
View File
@@ -28,6 +28,7 @@
#define INCLUDED_RENDERINGOPTIONS
#include "ps/CStr.h"
#include "ps/CStrIntern.h"
class CRenderer;
@@ -50,6 +51,18 @@ struct RenderPathEnum
static CStr8 ToString(RenderPath);
};
enum class RenderDebugMode
{
NONE,
AO
};
struct RenderDebugModeEnum
{
static RenderDebugMode FromString(const CStr8& name);
static CStrIntern ToString(RenderDebugMode mode);
};
class CRenderingOptions
{
// The renderer needs access to our private variables directly because capabilities have not yet been extracted
@@ -88,6 +101,8 @@ OPTION_CUSTOM_SETTER(NAME, TYPE); OPTION_GETTER(NAME, TYPE); OPTION_DEF(NAME, TY
OPTION_WITH_SIDE_EFFECT(RenderPath, RenderPath);
OPTION_WITH_SIDE_EFFECT(RenderDebugMode, RenderDebugMode);
OPTION(WaterEffects, bool);
OPTION(WaterFancyEffects, bool);
OPTION(WaterRealDepth, bool);
@@ -1,4 +1,4 @@
/* Copyright (C) 2020 Wildfire Games.
/* Copyright (C) 2021 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
@@ -47,6 +47,16 @@ std::string GetRenderPath()
return RenderPathEnum::ToString(g_RenderingOptions.GetRenderPath());
}
std::string GetRenderDebugMode()
{
return RenderDebugModeEnum::ToString(g_RenderingOptions.GetRenderDebugMode()).c_str();
}
void SetRenderDebugMode(const std::string& mode)
{
g_RenderingOptions.SetRenderDebugMode(RenderDebugModeEnum::FromString(mode));
}
bool TextureExists(const std::wstring& filename)
{
return g_Renderer.GetTextureManager().TextureExists(filename);
@@ -60,6 +70,8 @@ void RegisterScriptFunctions(const ScriptRequest& rq)
{
ScriptFunction::Register<&GetRenderPath>(rq, "Renderer_GetRenderPath");
ScriptFunction::Register<&TextureExists>(rq, "TextureExists");
ScriptFunction::Register<&GetRenderDebugMode>(rq, "Renderer_GetRenderDebugMode");
ScriptFunction::Register<&SetRenderDebugMode>(rq, "Renderer_SetRenderDebugMode");
REGISTER_BOOLEAN_SCRIPT_SETTING(DisplayFrustum);
REGISTER_BOOLEAN_SCRIPT_SETTING(DisplayShadowsFrustum);
}