Call gamma post process after ui.render #611

This commit is contained in:
Chase Cooper 2026-03-06 19:44:37 -05:00
parent 48028145dc
commit 98aeff310b
7 changed files with 67 additions and 32 deletions

View file

@ -27,6 +27,7 @@
#include "Leaderboards\DurangoLeaderboardManager.h" #include "Leaderboards\DurangoLeaderboardManager.h"
#include "..\..\Minecraft.Client\Tesselator.h" #include "..\..\Minecraft.Client\Tesselator.h"
#include "..\..\Minecraft.Client\Options.h" #include "..\..\Minecraft.Client\Options.h"
#include "..\GameRenderer.h"
#include "Sentient\SentientManager.h" #include "Sentient\SentientManager.h"
#include "..\..\Minecraft.World\IntCache.h" #include "..\..\Minecraft.World\IntCache.h"
#include "..\Textures.h" #include "..\Textures.h"
@ -832,6 +833,9 @@ void oldWinMainTick()
#endif #endif
ui.tick(); ui.tick();
ui.render(); ui.render();
pMinecraft->gameRenderer->ApplyGammaPostProcess();
#if 0 #if 0
app.HandleButtonPresses(); app.HandleButtonPresses();

View file

@ -1049,9 +1049,12 @@ void GameRenderer::ApplyGammaPostProcess() const
D3D11_VIEWPORT vps[NUM_LIGHT_TEXTURES]; D3D11_VIEWPORT vps[NUM_LIGHT_TEXTURES];
float gammas[NUM_LIGHT_TEXTURES]; float gammas[NUM_LIGHT_TEXTURES];
const UINT n = BuildPlayerViewports(vps, gammas, NUM_LIGHT_TEXTURES); const UINT n = BuildPlayerViewports(vps, gammas, NUM_LIGHT_TEXTURES);
if (n == 0)
return;
float gamma = 1.0f;
bool hasPlayers = n > 0;
if (hasPlayers)
{
bool anyEffect = false; bool anyEffect = false;
for (UINT i = 0; i < n; ++i) for (UINT i = 0; i < n; ++i)
{ {
@ -1063,6 +1066,19 @@ void GameRenderer::ApplyGammaPostProcess() const
} }
if (!anyEffect) if (!anyEffect)
return; return;
}
else
{
const float slider = app.GetGameSettings(0, eGameSetting_Gamma);
gamma = ComputeGammaFromSlider(slider);
if (gamma < 0.99f || gamma > 1.01f)
{
PostProcesser::GetInstance().SetGamma(gamma);
PostProcesser::GetInstance().Apply();
return;
}
return;
}
if (n == 1) if (n == 1)
{ {
@ -1193,9 +1209,7 @@ void GameRenderer::render(float a, bool bFirst)
mc->screen->render(xMouse, yMouse, a); mc->screen->render(xMouse, yMouse, a);
if (mc->screen != NULL && mc->screen->particles != NULL) mc->screen->particles->render(a); if (mc->screen != NULL && mc->screen->particles != NULL) mc->screen->particles->render(a);
} }
}
ApplyGammaPostProcess();
}
void GameRenderer::renderLevel(float a) void GameRenderer::renderLevel(float a)
{ {

View file

@ -81,7 +81,9 @@ private:
float m_cachedGammaPerPlayer[NUM_LIGHT_TEXTURES]; float m_cachedGammaPerPlayer[NUM_LIGHT_TEXTURES];
static float ComputeGammaFromSlider(float slider0to100); static float ComputeGammaFromSlider(float slider0to100);
void CachePlayerGammas(); void CachePlayerGammas();
public:
void ApplyGammaPostProcess() const; void ApplyGammaPostProcess() const;
private:
bool ComputeViewportForPlayer(int j, D3D11_VIEWPORT& outViewport) const; bool ComputeViewportForPlayer(int j, D3D11_VIEWPORT& outViewport) const;
uint32_t BuildPlayerViewports(D3D11_VIEWPORT* outViewports, float* outGammas, UINT maxCount) const; uint32_t BuildPlayerViewports(D3D11_VIEWPORT* outViewports, float* outGammas, UINT maxCount) const;

View file

@ -32,6 +32,7 @@
//#include "NetworkManager.h" //#include "NetworkManager.h"
#include "..\..\Minecraft.Client\Tesselator.h" #include "..\..\Minecraft.Client\Tesselator.h"
#include "..\..\Minecraft.Client\Options.h" #include "..\..\Minecraft.Client\Options.h"
#include "..\GameRenderer.h"
#include "Sentient\SentientManager.h" #include "Sentient\SentientManager.h"
#include "..\..\Minecraft.World\IntCache.h" #include "..\..\Minecraft.World\IntCache.h"
#include "..\Textures.h" #include "..\Textures.h"
@ -1302,6 +1303,9 @@ int main(int argc, const char *argv[] )
#endif #endif
ui.tick(); ui.tick();
ui.render(); ui.render();
pMinecraft->gameRenderer->ApplyGammaPostProcess();
#if 0 #if 0
app.HandleButtonPresses(); app.HandleButtonPresses();

View file

@ -86,6 +86,7 @@ char secureFileId[CELL_SAVEDATA_SECUREFILEID_SIZE] =
#include "..\..\Minecraft.Client\Tesselator.h" #include "..\..\Minecraft.Client\Tesselator.h"
#include "..\Common\Console_Awards_enum.h" #include "..\Common\Console_Awards_enum.h"
#include "..\..\Minecraft.Client\Options.h" #include "..\..\Minecraft.Client\Options.h"
#include "..\GameRenderer.h"
#include "Sentient\SentientManager.h" #include "Sentient\SentientManager.h"
#include "..\..\Minecraft.World\IntCache.h" #include "..\..\Minecraft.World\IntCache.h"
#include "..\Textures.h" #include "..\Textures.h"
@ -1245,6 +1246,8 @@ int main()
ui.tick(); ui.tick();
ui.render(); ui.render();
pMinecraft->gameRenderer->ApplyGammaPostProcess();
// Present the frame. // Present the frame.
PIXBeginNamedEvent(0,"Frame present"); PIXBeginNamedEvent(0,"Frame present");
RenderManager.Present(); RenderManager.Present();

View file

@ -46,6 +46,7 @@
#include "..\..\Minecraft.Client\Tesselator.h" #include "..\..\Minecraft.Client\Tesselator.h"
#include "..\Common\Console_Awards_enum.h" #include "..\Common\Console_Awards_enum.h"
#include "..\..\Minecraft.Client\Options.h" #include "..\..\Minecraft.Client\Options.h"
#include "..\GameRenderer.h"
#include "Sentient\SentientManager.h" #include "Sentient\SentientManager.h"
#include "..\..\Minecraft.World\IntCache.h" #include "..\..\Minecraft.World\IntCache.h"
#include "..\Textures.h" #include "..\Textures.h"
@ -904,6 +905,9 @@ int main()
#endif #endif
ui.tick(); ui.tick();
ui.render(); ui.render();
pMinecraft->gameRenderer->ApplyGammaPostProcess();
#if 0 #if 0
app.HandleButtonPresses(); app.HandleButtonPresses();

View file

@ -44,6 +44,7 @@
#include "..\..\Minecraft.World\compression.h" #include "..\..\Minecraft.World\compression.h"
#include "..\..\Minecraft.World\OldChunkStorage.h" #include "..\..\Minecraft.World\OldChunkStorage.h"
#include "Common/PostProcesser.h" #include "Common/PostProcesser.h"
#include "..\GameRenderer.h"
#include "Network\WinsockNetLayer.h" #include "Network\WinsockNetLayer.h"
#include "Windows64_Xuid.h" #include "Windows64_Xuid.h"
@ -1515,6 +1516,9 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
#endif #endif
ui.tick(); ui.tick();
ui.render(); ui.render();
pMinecraft->gameRenderer->ApplyGammaPostProcess();
#if 0 #if 0
app.HandleButtonPresses(); app.HandleButtonPresses();