Unreal Extended
A lightweight Unreal Engine 5 fork focused on desktop Win64 development. Built on top of the UE5 release branch — not tied to a specific engine version — so it stays close to Epic's latest stable work while layering in targeted quality-of-life, configuration, and code improvements.
This fork targets Windows 64-bit desktop development. Other platforms are not a priority and may not be tested or supported.
Feature Status
See Roadmap
Safe Engine Debloating
Reduces the engine's on-disk footprint without breaking functionality — targeting a leaner setup for Win64 desktop projects that don't need the full engine distribution.
- uex-debloat-SetupSlim.bat - To run setup focusing on Win64 platform. If you need additional platforms, uncomment in config.txt.
- uex-debloat-StripExecute.bat - Main debloater. Check config.txt to comment folders to any additional platform you may need.
- [OPTIONAL] uex-debloat-StripDebugSymbols.bat - After engine compilation, remove .pdb files to gain nearly 100GB.
Current Result
Space Savings
| Type | Savings |
|---|---|
| Default removal | ~40 GB |
| Optional removal | ~70 GB |
What Gets Removed
The default pass strips unneed content for game development, experimental or unfinished plugins and platform SDKs unrelated to Win64 — no rebuild required.
The optional pass additionally removes PDB (Program Database) debug symbol files. The engine launches and runs normally without them. You can still attach a debugger, but symbol resolution will not work — callstacks will show raw memory addresses instead of function names, and variable inspection will be unavailable. To restore full debugging capability you need to rebuild the engine from source.
Without PDB files, debugger sessions are possible but effectively unreadable. Only remove PDBs if you do not intend to debug engine-level code.
Debloater Modes
The debloater script lives in the devops/ folder at the root of the repository and reads its parameters from a config.txt file in the same directory.
It ships with two operating modes:
| Mode | Behavior |
|---|---|
| Delete | Permanently removes the targeted files. Smallest footprint, not reversible. |
| Move | Relocates files to a separate directory of your choice, preserving the ability to restore them later. |
Use Move mode if you want to recover space but keep a safety net. Use Delete once you're confident you won't need the files back.
GT Tonemappers
Adds two alternative tonemappers alongside the engine's built-in ACES: GT7 and GT Original. Both are selectable at runtime via a single cvar and expose per-parameter controls for fine-tuning without touching post-process volumes.
Selecting a Tonemapper
rEx.Tonemapper 2
| Value | Tonemapper |
|---|---|
0 | ACES (engine default) |
1 | GT7 |
2 | GT Original |
GT7 Tonemapper
Calibrating Brightness
rEx.GT7.PaperWhite controls the paper white point in nits. This is the primary brightness lever — adjust it before touching anything else.
| Range | Effect |
|---|---|
100 – 150 | Brighter image, lifted mid-tones |
250 | Default |
300 – 500 | Darker image, better highlight detail |
Shaping the Curve
rEx.GT7.LinearSection # Default: 0.444
rEx.GT7.ToeStrength # Default: 1.280
Post-Correction
rEx.GT7.Exposure # Default: 1.0
rEx.GT7.Contrast # Default: 1.0
rEx.GT7.Saturation # Default: 1.0 (0.0 = grayscale)
GT Original Tonemapper
rEx.GTOrig.MaxBrightness # Default: 1.0
rEx.GTOrig.Contrast # Default: 1.2
rEx.GTOrig.LinearStart # Default: 0.22
rEx.GTOrig.LinearLength # Default: 0.4
rEx.GTOrig.BlackTightness # Default: 1.33
rEx.GTOrig.Exposure # Default: 1.0
rEx.GTOrig.Saturation # Default: 1.0 (0.0 = grayscale)
Color Grading
Both tonemappers support the engine's color grading pipeline. Opt-in:
rEx.GT.UseColorGrading # Default: 0 (1 = enabled)
Clustered Deferred Undeprecation
Epic deprecated the Clustered Deferred Shading path in a recent UE5 release, removing cvar access and making it unreachable without source changes. This fork fully restores it — the cvar is re-exposed and the path runs as it did before deprecation, with no workarounds needed.
Better Default Settings & Optimizations
Skeletal Mesh & Tick Optimizations
Reduces per-frame overhead for skeletal mesh components and the actor tick pipeline. Projects with many animated characters or dense tick graphs should see measurable gains without any code changes on the project side.
Forward Rendering Improvements
Enhanced MSAA Resolve
Anti-Aliasing Comparison



Improved MSAA color resolve. Replaces the default equal-weight box average with a separable Mitchell-Netravali reconstruction filter and inverse luminance weighting for HDR firefly suppression. Based on techniques from MJP's "MSAA Filtering 2.0" (MIT License).
CVars
| CVar | Default | Description |
|---|---|---|
r.MSAAResolveEnhanced | 0 | 0: UE5 default, 1: enhanced resolve |
r.MSAAResolveFilterDiameter | 2.0 | Filter width in pixels. Larger = softer, smaller = sharper |
What It Does
Default UE5 resolve: Averages all MSAA sub-samples with equal weight. Ignores sub-pixel positions. Bright sub-samples can create firefly artifacts.
Enhanced resolve:
- Samples neighboring pixels' sub-samples.
- Weights each sample by its distance from the output pixel center using a separable Mitchell-Netravali filter kernel
- Applies inverse luminance weighting (
1/(1+lum)) to suppress HDR fireflies from specular highlights and emissives at pixel edges
Known Issues
r.WideCustomResolveproduces a black screen for me. Looks like pre-existing UE5.7.4 bug.
Direct-Light Micro-Shadowing
Adds lightweight direct-light micro-shadowing based on Panos Zompolas' material-occlusion work:
Improving Direct Lighting Material Occlusion - Part 2
The fork uses material AO as a micro-visibility input and applies the result to final direct diffuse and specular lighting instead of modifying base material values.
Behavior
| Path | Behavior |
|---|---|
MicroShadowing_PZAnalytical | Smooth analytical falloff used by default |
MicroShadowing_Cone | Hard cone alternative kept in code |
NormalDerivedMicroVisibility | Cheap normal-derived fallback helper, currently not active |
Current Implementation
The active path reads GBuffer.GBufferAO, evaluates micro-shadowing against AreaLight.NoL, then multiplies Lighting.Diffuse and Lighting.Specular.
This makes material AO affect direct lighting directionally, so small creases and surface cavities respond to light angle instead of only darkening indirect lighting.
This is a lightweight analytical approximation, not the full VNDF or LUT-based method from the article.
Getting Started
The fork is based on the UE5 release branch, meaning you build it the same way as a standard Unreal Engine source build from Epic's GitHub.
Prerequisites
- Windows 10 / 11 (64-bit)
- Visual Studio 2022 with the Game Development with C++ workload
- At minimum 300 GB free disk space for a full build (less if using the debloating pass)
- Epic Games account with Unreal Engine source access
Build
# Clone the fork — shallow clone fetches only the last commit
git clone --depth 1 https://github.com/mad-ben/UnrealEngine.git
# Run setup
devops/uex-debloat-SetupSlim.bat
# Generate project files
GenerateProjectFiles.bat
# Open UE5.sln in Visual Studio and build the Development Editor target
--depth 1 fetches only the latest commit with no history. Simple pulls will continue to work as long as the fork advances linearly. The problem arises when Git needs to find a common ancestor to reconcile changes — for example when upstream Epic commits are rebased or the fork diverges from the release branch. In that case Git cannot compute the diff and the pull will fail. For a fork tracking Epic's release branch this is a realistic scenario. Restore full history with:
git fetch --unshallow