A from-scratch asset explorer, viewer for the RE Engine games Resident Evil 7 and Resident Evil Village (8) (for now).
My goal for this project was to focus on rendering that is faithful to the game, so the standout feature is the visual quality of the display.
Screenshots · Features · Supported Formats · Architecture · Building · Legal
REAssetExplorer opens a game's .pak archives directly and lets you browse, preview and inspect assets that RE Engine ships: 3D models with full skeletal skinning, terrain and collision, foliage placement, particle effects, in-game GUI screens with their fonts, localized text tables, Wwise audio banks, AI navigation maps, and the state machines that drive character behavior. All of it renders through a real-time Direct3D 12 viewport that reproduces the engine's own lighting pipeline (G-buffer, light probes, shadows, fog, HDR post-processing) rather than a generic "3D model preview."
The project is split into two layers:
- A C++20 core (
Core,Explorer,Renderer,Games,Native) that parses every file format, builds scenes from the game's RSZ component data, and renders everything with Direct3D 12. - A C# desktop application (
UI, built with Avalonia) that hosts that native renderer inside a docked, multi-panel editor and exposes it through a small C ABI (REAssetNative.dll).
quick-around.mp4 |
passes.mp4 |
animation.mp4 |
ui.mp4 |
|
|
- Real-time Direct3D 12 renderer: meshes, materials (
.mdf2), and textures. - Deferred skinning.
- Multi-part character assemblies, a character made of several linked meshes/prefabs is indexed and animated as one unit, exactly like in-game.
- Camera, grid, selection and gizmo tools; an interactive transform gizmo for repositioning objects in a scene.
- Parses
.mot/.motlist/.motbankanimation clips and plays them back on the skeleton. - Parses
motfsm2/fsmv2state machines (PlayMotionnodes resolved against motion banks) with a visual graph view.
- Loads
.scn/.pfb/.userscenes and prefabs straight from their RSZ data. - Terrain (
.terr) and mesh collision (.mcol) with the game's own BVH, rendered in a dedicated collision view grouped by collider filter. - Procedural foliage (
.fol) placement, matching the engine's runtime point-baking rather than static instances. - Scene visibility and LOD streaming that reproduces the game's real rules (terrain rings,
DrawOn*radii, room culling viaEnvCullingData). - Parallelized scene prefetching and persistent pak handles for fast load times.
- GPU-driven culling with indirect draw dispatch.
- Deferred lighting: G-buffer, global illumination probes, shadow mapping, height fog.
- Full HDR post-process stack matching the game's own passes: histogram-based auto-exposure, TAA, soft bloom, timeline-driven LUT color grading, FXAA, CAS sharpening.
- A forward pass for glass and other transparents, including the engine's
BlurredSolidrefraction trick. - Debug overlays for G-buffer channels, wireframe, bounds and more.
- EFX particle system playback: billboards, ribbons, meshes, and the game's own particle materials.
- Wwise audio:
.bnkbank parsing,.pcksound package indexing, and full.wemdecoding (Vorbis conversion + playback) with a waveform view.
- Localized message table (
.msg) browsing and editing. - GUI scene (
.gui) parser with a live preview canvas, including the engine's custom encrypted font format (.oft). - AI navigation map (
AIMP) viewer for battle/encounter scenes. - Crash dump capture and rotating log files for diagnosing issues in the field.
- In-app thumbnail generation and movie (cutscene) playback.
| Category | Extensions | Notes |
|---|---|---|
| Archives | .pak (v4) |
RE7 and RE8, zstd/zlib compressed entries |
| Components | RSZ (embedded) | Full type database for both games |
| Textures | .tex |
BC1–BC7 decoding |
| Materials | .mdf2 |
|
| Meshes | .mesh, mesh LOD settings |
|
| Animation | .mot, .motlist, .motbank |
|
| State machines | motfsm2, fsmv2 |
|
| Scenes / prefabs | .scn, .pfb, .user |
|
| Terrain / collision | .terr, .mcol |
|
| Foliage | .fol |
|
| Particles | EFX (.efx) |
Billboard, ribbon, mesh, materials |
| AI | AIMP (navigation maps) | |
| Audio | Wwise .bnk, .pck, .wem |
|
| Text | .msg |
Localized message tables |
| GUI | .gui, .oft (encrypted fonts) |
|
| Shader binding metadata | .sdf |
|
| Light probes | light probe data |
Core/ File format readers, hashing, IO, RSZ parsing, pak archive access.
Explorer/ Asset indexing, scene building, LOD/visibility rules, FSM/effect/audio glue
Renderer/ Direct3D 12 renderer: device, pipelines, culling, lighting, post-process, viewport.
Games/ RE7 / RE8 game descriptors (paths, hashes, quirks) implementing a common IGame interface.
Native/ C ABI (REAssetNative.dll) bridging the C++ core to the desktop app: viewport hosting,
gizmos, audio, movie playback, thumbnails, crash handling.
UI/ Avalonia desktop application (C#): docking layout, asset browser, inspectors, editors.
Explorer depends on Core, Renderer and Games; Native depends on Explorer; UI talks to
Native exclusively through the exported rae_* C functions, the desktop app never links against
the C++ code directly.
Windows x64 only (the renderer targets Direct3D 12 directly).
Prerequisites
- CMake ≥ 3.28 and a C++20 toolchain (built and tested with MinGW-w64; MSVC should also work)
- Ninja (or any CMake generator you prefer)
- .NET 10 SDK
- A Direct3D 12–capable GPU and driver
1. Build the native core (REAssetNative.dll)
cmake -B cmake-build-release -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build cmake-build-release --target REAssetNativeThis fetches zstd, zlib and nlohmann/json automatically via FetchContent.
2. Build and run the desktop app
cd UI/REAssetExplorer.Desktop
dotnet run -c Release- Launch the app and open Settings, then point it at your legally owned RE7 or RE8 installation directory.
- Browse the asset tree on the left; double-click a mesh, texture, scene, animation, effect, etc. to open it in the appropriate editor panel.
- Scenes and prefabs open directly in the 3D viewport with real lighting, culling and LOD.
Some of the REAssetExplorer's file-format readers were ported from REE-Lib,
its RSZ type databases come from RE_RSZ, and its .pak file
lists from REE.PAK.Tool. Wwise audio decoding uses
ww2ogg and stb_vorbis; playback
uses miniaudio; texture decoding uses
bcdec. The desktop app is built on
Avalonia and Dock.
Full license texts and per-file attribution: THIRD_PARTY_NOTICES.md.

