aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/PostProcesser.h
diff options
context:
space:
mode:
authorModMaker101 <119018978+ModMaker101@users.noreply.github.com>2026-03-05 14:41:17 -0500
committerGitHub <noreply@github.com>2026-03-06 02:41:17 +0700
commitcbcf3de358f97ae1f687f3ffa47fcdb910e39bcb (patch)
tree35e2e226b669496319c978d026045b0ebe91ef89 /Minecraft.Client/Common/PostProcesser.h
parent55231bb8d3e1a4e2752ac3d444c4287eb0ca4e8b (diff)
Fix gamma slider via pixel shader #178 (#481)
* Fix gamma slider via pixel shader #178 * LCE-like gamma using postprocess shader
Diffstat (limited to 'Minecraft.Client/Common/PostProcesser.h')
-rw-r--r--Minecraft.Client/Common/PostProcesser.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/PostProcesser.h b/Minecraft.Client/Common/PostProcesser.h
new file mode 100644
index 00000000..ab7aedf6
--- /dev/null
+++ b/Minecraft.Client/Common/PostProcesser.h
@@ -0,0 +1,57 @@
+#pragma once
+
+#include <d3d11.h>
+
+class PostProcesser
+{
+public:
+ static PostProcesser& GetInstance()
+ {
+ static PostProcesser instance;
+ return instance;
+ }
+
+ void Init();
+ void Apply() const;
+ void SetViewport(const D3D11_VIEWPORT& viewport);
+ void ResetViewport();
+ void CopyBackbuffer(); // Copy backbuffer once before multi-pass gamma
+ void ApplyFromCopied() const; // Apply gamma using already-copied offscreen texture
+ void Cleanup();
+ void SetGamma(float gamma);
+ float GetGamma() const { return m_gamma; }
+ PostProcesser(const PostProcesser&) = delete;
+ PostProcesser& operator=(const PostProcesser&) = delete;
+
+private:
+ PostProcesser();
+ ~PostProcesser();
+
+ static bool IsRunningUnderWine();
+
+ ID3D11Texture2D* m_pGammaOffscreenTex = nullptr;
+ ID3D11ShaderResourceView* m_pGammaOffscreenSRV = nullptr;
+ ID3D11RenderTargetView* m_pGammaOffscreenRTV = nullptr;
+ ID3D11VertexShader* m_pGammaVS = nullptr;
+ ID3D11PixelShader* m_pGammaPS = nullptr;
+ ID3D11Buffer* m_pGammaCB = nullptr;
+ ID3D11SamplerState* m_pGammaSampler = nullptr;
+ ID3D11RasterizerState* m_pGammaRastState = nullptr;
+ ID3D11DepthStencilState* m_pGammaDepthState = nullptr;
+ ID3D11BlendState* m_pGammaBlendState = nullptr;
+
+ bool m_initialized = false;
+ float m_gamma = 1.0f;
+ bool m_wineMode = false;
+ D3D11_VIEWPORT m_customViewport;
+ bool m_useCustomViewport = false;
+
+ struct GammaCBData
+ {
+ float gamma;
+ float pad[3];
+ };
+
+ static const char* g_gammaVSCode;
+ static const char* g_gammaPSCode;
+}; \ No newline at end of file