mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-07-28 19:12:48 +00:00
Adds render debug modes.
Tested By: Langbart Differential Revision: https://code.wildfiregames.com/D4311 This was SVN commit r25992.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user