Give every material its own history.
Snapshot the graph, restore any version in one click - labeled, thumbnailed, right inside the editor. No Perforce, no Git, no duplicate assets.
You know the folder. `M_Master`, `M_Master_v2`, `M_Master_FINAL`, `M_Master_FINAL_real`. Duplicating a material every time you want to keep a version that works - because setting up Perforce for a solo project is never going to happen.
Material Snapshot gives every material its own history stream, right inside the editor. Snapshot the current graph with one click, restore any past version with one click, and undo a restore with Ctrl+Z. No source control. No duplicate soup.
What it does
- Snapshot - right-click any Material → Save. Optionally give it a human label ("before AO tweak", "client v2").
- Restore - right-click → Restore Latest, or open the History panel and double-click any row. The graph rebuilds instantly.
- A real history panel - every snapshot as a row: rendered thumbnail, your label, and a timestamp. Newest on top. Restore, Rename, or Delete any one.
- Undo - pressed Restore by mistake? `Ctrl+Z` reverts it. Each restore is a single undo step.
- Zero setup - snapshots are stored project-locally as real assets in a hidden folder. Nothing to configure, no accounts, no external tools.
What's preserved
The full material graph state: expression nodes, wires, output pins, Static Switch parameters, Material Function calls, Custom HLSL nodes, comment boxes, and inline pin constants. Editor-only - no runtime cost, nothing shipped in your build.
What makes this different
The other ways to version a material are duplicating assets (`_v1`, `_v2`, `_FINAL`) and setting up source control. Material Snapshot is neither. It's a one-click history that lives inside the editor, stores snapshots locally as regular assets, and needs no external tools or accounts to work. Built for developers who should be on version control but aren't - and won't be.
Good to know (the fine print)
- Restore marks the material dirty - save (Ctrl+S) to persist. This is deliberate, so Ctrl+Z can revert cleanly with no file-system side effects.
- Snapshots live under `Content/__MatSnap/`. They're real `.uasset` files. If you're on source control, add that folder to your ignore list.
- Moving/renaming a material starts a fresh history for the new path (old snapshots stay at the old path).
Compatibility
- Unreal Engine 5.7
- Windows (Win64)
- Editor-only plugin. No runtime cost, nothing shipped in your build
- No external dependencies. No Perforce/Git or other source control required
- More engine versions added as they're validated
Support
Support and bug reports are handled on the Epic Developer Community forum thread linked from this listing. Typical response within 1-3 business days. Include your UE version, the plugin version, and any relevant log output from the `LogMaterialSnapshot` category (in `<YourProject>/Saved/Logs/`).