An advanced photo mode/free camera mod for Genshin Impact
Features · Showcase · Installation · Getting started · Hotkeys · Controller · Graphics · Building
| Camera | Free camera, focal length, roll, smooth movement (damping), near clip |
| Time | Pause, slow motion and speed up; time of day with time-lapse; weather override (sunny, cloudy, rain, thunderstorm, snow, mist) |
| Composition | Hide UI for clean shots; frame guide for any crop ratio, such as 7:5 or 21:9 |
| Graphics | Game settings and resolution from the free camera, with two presets you can make your own |
| Enhancements | Ambient light, contact shadows, soft sun shadows, haze, light shafts, wet surfaces, a tone map and a vintage lens flare, through CameraTools' ReShade add-on |
| Camera paths | Record views as nodes and fly the camera through them in one shot |
| Replays | Record the party, their skills and the enemies near them, and play it back alone or along a camera path to film the moment again |
| Lights | Point, spot and soft sphere lights, for the world or only characters |
| Posing | Freeze the active character, move and turn them, turn their joints, shape hands and face, save poses |
| Depth of field | A real lens's blur inside the game, from the focal length, aperture and focus distance: autofocus on a point or on the character's eyes, bokeh with blades, soap-bubble rims, chromatic fringes, cat's eye and swirl, through CameraTools' Enhancements add-on. Cinematic DOF and iMMERSE work too. |
| ReShade | One-button screenshots at your highest settings, also as long exposures and as DNG raw files for Lightroom |
| Input | Hotkeys you change in the panel; XInput controllers, including the Steam Deck |
paths.mp4
Free camera with a frame guide |
Posing a character's joints |
Building a camera path |
Playing the path back |
|
|
This mod requires a custom build of MelonLoader that supports Genshin. ReShade with full add-on support is optional: without it, the Enhancements, depth of field, ReShade tab and sphere lights are unavailable.
- Download the latest release from the Releases page.
- Copy
CameraTools.dllinto MelonLoader'sModsfolder. - Optional, with ReShade: copy
CameraToolsReShadeBridge.addon64andCameraToolsEnhancements.addon64into the folder ReShade loads add-ons from:reshade-shaders/Addons, or the folder thatAddonPathinReShade.ininames. - Start the game, load into the world, and press Insert or L3+R3. See Getting started.
Take all three files from the same release. CameraTools checks each add-on's version, and if one does not match, the tab that needs it says which version it found and which it needs. Without ReShade and the add-ons, the free camera, paths, replays, lights and posing still work.
To update, replace the files with the ones from the new release. To uninstall, delete them. Your settings stay in UserData/MelonPreferences.cfg, and your camera paths, lights and poses in UserData/CameraTools/.
- Press Insert to turn on the free camera. On a controller, press L3+R3. Press it again to leave.
- Press Tab (Start) to open the settings panel. Click and drag with the mouse, or use the controller.
- Press H (B) to hide CameraTools' hints for a clean shot. The free camera already hides the game's HUD.
While the free camera is on, the game ignores the keyboard, mouse and controller, so W moves only the camera. While it is off, the game has them back, and only Insert and L3+R3 reach CameraTools.
| Guide | What it covers |
|---|---|
| Camera paths | Record camera positions as nodes and fly the free camera through them |
| Lights | Add point, spot and sphere lights, place them by looking through them, attach them to the camera or the character, and shade characters from a light as from the sun |
| Pose | Move the character, turn joints, shape hands, set expression and gaze, save poses |
| ReShade | Depth of field, one-button screenshots, long exposure shots, DNG raw files |
To change a hotkey, open the panel's Keybinds tab and click the key or the controller binding, then press the new key or buttons. On the controller, select the row and press A. A combination such as Back+X counts when you let go of the last button.
- Esc cancels and Backspace clears the key. A controller rebind gives up after 5 seconds with nothing pressed.
- A key that another hotkey uses swaps: that hotkey takes the old key, and a notice says so.
- Restore defaults, at the top of the tab, puts every hotkey back. Press it twice.
- Toggle free camera always keeps a key and a controller binding, so you can always leave the free camera. Enter cannot be bound, because Move light, Pose joints, Move character and Edit replay use it.
The bindings are saved in UserData/MelonPreferences.cfg, under the hotkeys' names: keys in [CameraTools] as Unity key codes, and controller bindings in [CameraToolsController].
| Free camera | Game speed | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| ||||||||||||||||||||||||||||||||
| Interface | Camera paths and replays | ||||||||||||||||||||||||||||||||
|
Depth of field
|
Esc and the left click are fixed. Every other key above is a default you can change.
L3+R3 turns the free camera on, and with it hands the controller to CameraTools: the game stops reading it and it rumbles. Press L3+R3 again to leave the free camera and give the controller back.
Recording a replay gives the controller to the game and turns the free camera off, so you play as usual while it records. With Play camera path while recording on, the free camera stays on and flies the path instead. Press L3+R3 (Insert) to stop the recording and return to the free camera.
Hold Back for the right-hand column. While it is held, LT and RT do not move the camera.
| Button | Action | Back + button |
|---|---|---|
| Left stick | Move (analog) | |
| Right stick | Look around | Move the focus point, while it shows |
| LT / RT | Down / up (analog) | Add a path node / play or stop the path |
| LB / RB | Roll left / right | Slow / fast movement (hold) |
| R3 | Reset roll | Center the focus point |
| D-pad ↑ / ↓ | Zoom in / out | Speed +0.5 / −0.5 |
| D-pad ← / → | Speed −0.1 / +0.1 | Record a replay / play or stop the replay |
| A | Reset zoom | |
| B | Hide UI | |
| X | Toggle pause | |
| Y | Reset game speed | Toggle speed 5.0 |
| Start | Settings panel |
While the panel is open, the controller drives the panel instead:
| Button | Settings panel |
|---|---|
| D-pad ↑ / ↓, left stick | Previous / next setting (hold to repeat) |
| D-pad ← / → | Change the value: slider, switch, option, camera path or node, resolution size (hold to repeat) |
| A | Flip a switch, run an action, apply a resolution slot, rebind a hotkey |
| Y | Type a resolution slot's size |
| LB / RB | Previous / next tab |
| B, or the panel button (Start) | Close the panel, or cancel typing |
Back with the right stick and the panel's buttons are fixed. Change the others in the Keybinds tab. The right stick always looks around, so it cannot be bound.
The Graphics tab changes the game's graphics settings from the free camera, some past the game's own limits.
Highest and Lowest set every row at once; the line under each row shows what each preset sets it to. Restore my settings puts back what you had before CameraTools changed anything.
To make a preset your own, set the rows the way you want (for example, apply Highest and turn Bloom off), then select Save current settings as Highest or as Lowest. A saved preset sets every game setting, every value past the limits and every enhancement but the depth of field. The screenshot button applies Highest, so in that example your screenshots have no bloom. Reset presets brings back the built-in ones.
This category controls the effects of CameraTools' ReShade add-on, CameraToolsEnhancements.addon64. Everything starts off.
- The heading folds the category away and shows how many effects are on.
- The Enhancements switch turns all effects on or off; each effect also has its own switch, which reveals its settings.
- Reset enhancements puts every switch and value back to its default.
- Changes are saved and applied when the game starts.
- Built-in presets leave enhancements alone. A saved preset sets them too, and Restore puts them back.
If the heading says the add-on was not found, ReShade has not loaded it.
Lens flare draws the flare of an old single-coated lens: thin orange-red arcs with a faint rainbow along them, filled arcs with a thick rim, soft ghost discs with a bright spot, diagonal streaks and a warm glare toward the light. It needs the Enhancements switch on.
| Row | Does |
|---|---|
| Source | Sun follows the sun disc the sky draws and fades while trees, buildings or characters hide it, on the picture or off it. Manual places a light that is never hidden. |
| Position X, Position Y | Manual only. -1 is the left or top edge and 1 the right or bottom edge; up to 2 places the light past the edge, where most arcs and streaks show. |
| Strength | Scales the whole flare. |
| Arcs, Filled arcs, Ghosts, Streaks, Glare | Each part's brightness. Glare and Filled arcs start at 0.5, the others at 1. |
| Rainbow | A band of spectral color along each arc, violet inside and red outside. 1, the default, is a faint fringe; 4 is a full rainbow ring. |
| Size | Scales every part. |
| Warmth | 0 is cool, 0.5 the lens's own orange, 1 a deeper orange. |
| Red fringe | The red edge outside each arc and ghost. |
| Texture | The marks a real lens leaves: fine streaks and uneven light along the arcs, dust in the ghosts and faint rays in the glare. 0 is smooth, 1 the default, 2 rough. |
While you compose, the flare is drawn into the picture before the game's HUD and the CameraTools panel, so neither is covered. The screenshot button draws it after ReShade's effects and the depth of field, so no effect blurs it. The game's own sun flare is off while this one runs.
The Camera tab's Frame guide draws your planned crop as a frame in the middle of the screen. Turn on Show frame guide and pick an aspect ratio, or pick Custom and type one, such as 7:5 or 2.4.
- Portrait turns the frame on its side.
- Outside the frame shades the cut-off area, from lines only at 0% to black at 100%.
- Rule of thirds adds a grid inside the frame.
Hide UI hides the guide, and the screenshot button hides it before the shot.
All settings live in UserData/MelonPreferences.cfg.
[CameraToolsGraphics]
| Entry | Default | Description |
|---|---|---|
ResolutionSlot1 |
1280x800 |
Size the - hotkey and Slot 1 apply, as WxH |
ResolutionSlot2 |
2560x1600 |
Size the = hotkey and Slot 2 apply, as WxH |
HideOutlines |
false |
Hides outlines around characters, NPCs and weapons. Set by the Outlines switch; presets and screenshots leave it alone. |
HighestPreset |
empty | Your own Highest preset. Empty means built-in. |
LowestPreset |
empty | Your own Lowest preset. Empty means built-in. |
SavedSettings |
empty | Your game settings before CameraTools first changed one, for Restore. Managed by CameraTools. |
SavedEnhancements |
empty | Your enhancements before a preset first changed them, for Restore. Managed by CameraTools. |
Slots from 320x200 to 16384x16384 are accepted. A slot that does not parse falls back to its default, and the log names it.
[CameraToolsEnhancements]
One entry per switch and value of the Enhancements category, under the names the log uses, plus Folded, which keeps the category folded.
[CameraToolsFrameGuide]
Shown, AspectRatio, CustomRatio, Portrait, OutsideTheFrame (0 to 1) and RuleOfThirds.
CameraTools has three parts. The mod checks each add-on's version, so build and install them together:
| Part | File | Needed for |
|---|---|---|
| The mod | CameraTools.dll |
Everything |
| The ReShade add-on | CameraToolsReShadeBridge.addon64 |
The ReShade tab and sphere lights |
| The Enhancements add-on | CameraToolsEnhancements.addon64 |
The Graphics tab's Enhancements, long exposures and DNG files |
You need the .NET 6 SDK or newer and a custom MelonLoader install whose MelonLoader/net6 and MelonLoader/Il2CppAssemblies hold the references.
dotnet build CameraTools -c Release -p:GameDir=<game folder>GameDir can also come from the environment. If a reference is missing, the build says which. Copy CameraTools/bin/Release/CameraTools.dll to the game's Mods folder.
The source is in ReShadeBridge/. You need Python 3 and LLVM's clang-cl and lld-link. The script downloads ReShade's API headers at the version the add-on targets.
macOS or Linux
brew install llvm lld # macOS
xwin --accept-license splat --output <sdk folder> # Windows SDK and C runtime
python3 ReShadeBridge/build.py --sdk <sdk folder>xwin downloads the Windows SDK and C runtime; --accept-license accepts Microsoft's license for them.
Windows: install LLVM, open a Visual Studio developer prompt, and run python ReShadeBridge/build.py.
The add-on lands in ReShadeBridge/bin/. Copy it to the ReShade folder, or the folder AddonPath in ReShade.ini names. build.py --help lists the other options.
The tests play the add-on's request tables against a fake ReShade and need only a C++17 compiler:
ReShadeBridge/tests/run.shThe source is in Enhancements/. It builds like the ReShade add-on, with the same LLVM and Windows SDK, and also needs vkd3d-compiler from vkd3d, Wine's HLSL compiler, to compile its shaders.
python3 Enhancements/build.py --sdk <sdk folder> --vkd3d-compiler <path to vkd3d-compiler>Instead of --vkd3d-compiler, you can set ENHANCEMENTS_VKD3D_COMPILER. On Windows, leave out --sdk and run from a Visual Studio developer prompt.
The add-on lands in Enhancements/bin/. Copy it next to the ReShade add-on. The tests need a C++17 compiler and Python 3 with numpy:
Enhancements/tests/run.sh- FreyaHolmer: Free camera script
- Otis_Inf: Depth of field and camera paths inspiration
- FRAMED. Screenshot Community: The Photomode Wishlist









