2022-02-26 16:24:03 -05:00
|
|
|
#include <std_include.hpp>
|
|
|
|
#include "loader/component_loader.hpp"
|
2022-05-28 15:08:12 -04:00
|
|
|
|
|
|
|
#include "dvars.hpp"
|
|
|
|
|
2022-02-26 16:24:03 -05:00
|
|
|
#include "game/game.hpp"
|
|
|
|
#include "game/dvars.hpp"
|
|
|
|
|
|
|
|
#include <utils/hook.hpp>
|
|
|
|
|
|
|
|
namespace renderer
|
|
|
|
{
|
|
|
|
namespace
|
|
|
|
{
|
|
|
|
utils::hook::detour r_init_draw_method_hook;
|
|
|
|
utils::hook::detour r_update_front_end_dvar_options_hook;
|
|
|
|
|
|
|
|
int get_fullbright_technique()
|
|
|
|
{
|
2022-05-05 08:23:50 -04:00
|
|
|
switch (dvars::r_fullbright->current.integer)
|
|
|
|
{
|
2022-05-05 15:07:49 -04:00
|
|
|
case 4:
|
|
|
|
return 3;
|
2022-05-05 08:23:50 -04:00
|
|
|
case 3:
|
|
|
|
return 13;
|
|
|
|
case 2:
|
|
|
|
return 25;
|
|
|
|
default:
|
|
|
|
return game::TECHNIQUE_UNLIT;
|
|
|
|
}
|
2022-02-26 16:24:03 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
void gfxdrawmethod()
|
|
|
|
{
|
|
|
|
game::gfxDrawMethod->drawScene = game::GFX_DRAW_SCENE_STANDARD;
|
|
|
|
game::gfxDrawMethod->baseTechType = dvars::r_fullbright->current.enabled ? get_fullbright_technique() : game::TECHNIQUE_LIT;
|
|
|
|
game::gfxDrawMethod->emissiveTechType = dvars::r_fullbright->current.enabled ? get_fullbright_technique() : game::TECHNIQUE_EMISSIVE;
|
|
|
|
game::gfxDrawMethod->forceTechType = dvars::r_fullbright->current.enabled ? get_fullbright_technique() : 242;
|
|
|
|
}
|
|
|
|
|
|
|
|
void r_init_draw_method_stub()
|
|
|
|
{
|
|
|
|
gfxdrawmethod();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool r_update_front_end_dvar_options_stub()
|
|
|
|
{
|
|
|
|
if (dvars::r_fullbright->modified)
|
|
|
|
{
|
2022-05-05 08:23:50 -04:00
|
|
|
game::Dvar_ClearModified(dvars::r_fullbright);
|
2022-02-26 16:24:03 -05:00
|
|
|
game::R_SyncRenderThread();
|
|
|
|
|
|
|
|
gfxdrawmethod();
|
|
|
|
}
|
|
|
|
|
|
|
|
return r_update_front_end_dvar_options_hook.invoke<bool>();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class component final : public component_interface
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
void post_unpack() override
|
|
|
|
{
|
2022-05-05 08:23:50 -04:00
|
|
|
if (game::environment::is_dedi())
|
2022-02-26 16:24:03 -05:00
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2022-05-05 15:07:49 -04:00
|
|
|
dvars::r_fullbright = dvars::register_int("r_fullbright", 0, 0, 4, game::DVAR_FLAG_SAVED, "Toggles rendering without lighting");
|
2022-02-26 16:24:03 -05:00
|
|
|
|
2022-05-28 15:08:12 -04:00
|
|
|
r_init_draw_method_hook.create(SELECT_VALUE(0x0, 0x669580_b), &r_init_draw_method_stub);
|
|
|
|
r_update_front_end_dvar_options_hook.create(SELECT_VALUE(0x0, 0x6A78C0_b), &r_update_front_end_dvar_options_stub);
|
2022-02-26 16:24:03 -05:00
|
|
|
|
2022-05-28 15:08:12 -04:00
|
|
|
// use "saved" flags
|
|
|
|
dvars::override::register_enum("r_normalMap", game::DVAR_FLAG_SAVED);
|
|
|
|
dvars::override::register_enum("r_specularMap", game::DVAR_FLAG_SAVED);
|
|
|
|
dvars::override::register_enum("r_specOccMap", game::DVAR_FLAG_SAVED);
|
2022-02-26 16:24:03 -05:00
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2022-05-28 15:08:12 -04:00
|
|
|
REGISTER_COMPONENT(renderer::component)
|