Real-time film emulation for Unreal Engine. Drop in an Actor, pick a look, then make it yours.
中文说明 · Full user guide / 完整使用指南 · Build and validation · License scope
Filmimic brings film color, animated grain, halation, bloom, lens artifacts and framing controls into one Unreal post-process workflow. It includes 21 looks, 197 effect parameters, reusable preset assets, Blueprint controls and four quality tiers.
The initial public source snapshot is 1.0.0. The tested baseline is Unreal Engine 5.8.3 / Windows / DX12 / SM6. This repository contains plugin sources and the assets needed by those sources; it does not contain Unreal Engine, compiled plugin binaries, private project maps or build caches.
Same scene, camera and lighting; different preset selections. These are actual Unreal SceneCapture2D renders, not externally applied filters or generated concept art.
| Native Unreal | Kodak Portra 400 |
|---|---|
![]() |
![]() |
| Kodak Gold 200 | Red Velvet | Cinematica |
|---|---|---|
![]() |
![]() |
![]() |
The showcase uses the project's ArchVis sample interior, with its original lights, Lumen GI/reflections and temporal anti-aliasing requested. Each 2560×1440 image is captured after 100 real Editor warm-up frames. Capture settings and reproduction instructions document the camera and required sample content. The map and its assets are not bundled with the plugin. Preset names identify artistic looks, not a guarantee of a physical film stock's response or an endorsement by a film manufacturer.
| Area | Included controls |
|---|---|
| Film emulation | 14 film branches plus None, white balance, highlight/shadow tone, saturation, clarity and sharpness |
| Grain | Quick size/roughness choices or advanced ISO, size, roughness and softness; optional animation |
| Lens effects | Vignette, bloom, glints, halation, soft glow, ghosts, flare streaks, dispersion, fringing and lens dirt |
| Grading | Flicker, split toning, punchiness, color adjustments and stylized 2D blur |
| Overlays | Composition grids, borders, film sprockets and text watermarks |
| Workflow | Shared or per-Actor settings, parameter resets, name-based Blueprint access and save-your-own presets |
Parameters are grouped in Details. Controls that do not affect the current branch are greyed out. Hover a label for a Chinese explanation, units and its parameter identifier; angle controls display degrees.
-
Install UE 5.8.3 and the C++ toolchain supported by that engine version.
-
With your Editor closed, clone the repository into your project's plugin folder:
git clone https://github.com/DreamyLab30/Filmimic.git .\Plugins\Filmimic
-
Build your project's Editor target. A Blueprint-only project may need a C++ module or a locally built plugin package before it can load a source plugin.
-
Open the project, enable Filmimic under Edit → Plugins, then restart the Editor. The shader module loads at engine startup.
-
Add FilmimicActor to your level. In Details, choose Preset. Enable Show Plugin Content in the Content Browser to browse
/Filmimicassets.
To build a distributable plugin locally, use the supplied wrapper with your own engine location and a new output directory outside the repository:
.\scripts\build.ps1 -EngineRoot $env:UE_ROOT -OutputDirectory $env:FILMIMIC_PACKAGE_DIRUE_ROOT is the folder containing the engine's Engine directory. BuildPlugin compiling successfully does not verify a cooked game; that is a separate test.
- Select a preset such as Kodak Portra 400, Cinematica or Red Velvet.
- Click Edit on this actor to copy the shared preset into this Actor's local settings.
- Adjust exposure and film color first, then grain and lens effects. Use the group checkboxes to isolate an effect.
- Enter a name in Save as Preset, then click Save Preset. It writes a new asset under
/Game/FilmimicPresets, selects it immediately and adds it to the preset dropdown. Existing names require overwrite confirmation. - Save the level to retain the Actor's reference to the new preset.
Shared settings follow the preset asset, including later edits to it. Local settings affect just this Actor. Selecting another preset in local mode replaces the local values; save a useful look before switching. Presets store effect settings and resource bindings, not an Actor's position, area radius or Weight.
| Control | Meaning |
|---|---|
| Enabled | Off restores the native UE path for this Actor. |
| Weight | Blend between native Unreal output (0) and Filmimic (1). Use this for fades and before/after comparisons. |
| Intensity | Strength inside the Filmimic effect chain. At 0, the AgX display transform remains; this is different from disabling Filmimic. |
Use Engine Exposure is on by default. Exposure EV adds stops before the effect chain. The quick Cinematic quality tier is the default; Reference retains the highest-precision path and is much more expensive.
Get the Actor's Filmimic component and call:
SetMenuParameterByName(
Name = "Film Emulation / Film Type / Film Type",
Option = "VELVET / Vivid")
SetParameterByName(
Name = "Lens Effects / Halation / Strength",
Value = 0.2)
FadeWeight(TargetWeight = 0, DurationSeconds = 1.5)
BlendToPreset(TargetPreset, DurationSeconds = 2.0)
GetAnimatableParameterNames lists valid names; GetParameterDescription returns their explanations. ApplyPreset follows a shared asset; LoadPresetAsLocal copies it into this Actor. Transitions interpolate continuous controls; menu and switch choices change at the midpoint.
The Animated Controls A–D slots expose four selected numeric parameters to Sequencer. Weight, Intensity and Exposure EV also support keyframes. Clear a slot to stop its value overriding the ordinary parameter.
Leave Unbound on for a world-wide look. Turn it off to use Radius and Blend Distance around the Actor. The highest-priority enabled candidate owns the view and fades toward native Unreal output; overlapping Filmimic Actors do not perform arbitrary multi-look blending.
Default · Astra 1996 · Cinematica · Eternally Expired · Golden Chrome · Kodak 1971 · Kodak Ektra · Kodak Gold 200 · Kodak Portra 160 · Kodak Portra 400 · Kodak Portra Pro · Nostalgic Breeze · Pacifica · Red Velvet · SoCal · Sprint Clarity · Stonewall · Summer of 76 · Superia · Victoria · Yeast Lords
FilmimicActor.GetAvailablePresets() returns these 21 assets. FilmimicPresetCatalog.FindPresetByName() resolves a display name. Saved user presets appear after the bundled looks in the editor dropdown.
Historical development measurements on an RTX 4090, Default preset, isolated SceneCapture and Insights GPU timing:
| Output | Cinematic | Balanced | Performance | Reference |
|---|---|---|---|---|
| 1920×1080 | 1.98 ms | 1.85 ms | 1.65 ms | 28.7 ms |
| 3840×2160 | 9.8 ms | — | 3.5 ms | — |
These are plugin GPU timings from the development harness, not complete game-frame times or a fresh cross-hardware benchmark. At high resolution, Performance reduces the grain domain and may soften/ring high-contrast edges. Profile your own scene with stat gpu. Validation notes distinguish historical evidence from this repository's fresh checks.
- Editor viewport and PIE were exercised during development. The standalone source build and the ArchVis captures were verified for this public snapshot.
- Cooked-game execution, other engine versions/platforms and Movie Render Queue are not yet verified.
- HDR output encoding has numerical checks; a physical HDR display has not been validated. VR is experimental and disabled by default.
- SceneCapture participation is opt-in via Allow Scene Capture. Reflection and planar-reflection captures are excluded.
- At
Weight = 1, Filmimic replaces the tonemapper. UE tonemapper color grading/LUTs therefore do not compose as ordinary additional grading; use Filmimic controls or native-image blending deliberately. - The plugin's Stylized 2D Blur is a whole-image effect. It does not replace velocity-based motion blur.
See CONTRIBUTING for the workflow and SECURITY for private vulnerability reporting. A useful rendering issue includes engine/RHI, resolution, preset, quality tier and an isolated reproduction.
GPL-2.0-or-later, with third-party notices and the Blinker font's separate OFL terms. See LICENSE and license scope. Unreal Engine is licensed separately; this repository grants no exception to Epic's terms. The code is publicly inspectable, and downstream distribution must respect the applicable component licenses and permissions.




