Jan 6, 2026
ScreenshotKit Documentation
Current Latest version 1.1.2
Contents
Quick Start
Import the package into your Unity project.
Open the window from Tools > ScreenshotKit > Settings Window, or click the ScreenshotKit toolbar overlay in the Scene View.
Press Ctrl+Shift+S with the Game View focused — that's your first screenshot, taken from the active camera at the resolution shown in the Capture tab.
Files land in
Assets/ScreenshotKit/Screenshotsby default. Change this under the Settings tab → Save Location.
The window has four tabs:
Tab | What it does |
|---|---|
Capture | Single screenshots and batch multi-camera capture. |
Gif | GIF recording and image sequence recording. |
Mattes | Cryptomatte segmentation, lighting decomposition, and data-buffer passes. |
Settings | Output paths, filename templates, file formats, presets, shortcuts. |
Workflows
Each workflow follows the same shape: when to use it, the steps, the result, and a few tips.
Take a single screenshot
When to use: You want a high-resolution still from one camera — for marketing, store assets, debugging, or documentation.
Steps:
Open the Capture tab.
Under Resolution, set width and height (or click a preset like 1080p / 4K / Game View). Optionally raise Size Multiplier (1–8x) for supersampled output.
Under Capture Options, toggle Transparent Background if you want an alpha channel, and pick a Capture Layers mask if you want to exclude layers.
Click Take Screenshot, or press Ctrl+Shift+S from the Game View, or Ctrl+Shift+Alt+S from the Scene View.
Result: A single image file saved to your Save Location. The filename is built from your filename template (camera name, timestamp, resolution, prefix, suffix — see Customize filenames).
Tips:
The Game View preset matches your current Game View aspect/resolution.
Size Multiplier renders at
width × multiplierbyheight × multiplierand writes the supersampled result — useful for crisp 8K stills without changing your scene's display resolution.Combined width × height × multiplier² must stay under 64 megapixels (see Limits).
See also: Runtime API — single capture.
Capture from multiple cameras (Batch Capture)
When to use: You have several cameras (turnaround views, vehicle angles, lighting setups, character poses) and you want one shot from each, with consistent naming.
Steps:
Open the Capture tab and expand Batch Capture.
Click Add All Scene Cameras, or drag specific cameras into the list one at a time. Reorder and remove entries as needed.
Optionally tick Override Resolution on individual entries to give a single camera a different size.
Adjust Batch Delay under Settings if you need a small pause between captures (0–1 seconds) — useful when post-processing or particle systems need a frame to settle.
Click Capture All (N cameras).
Result: One file per camera, each named with that camera's name. If Render mattes with capture is enabled, every enabled matte pass is also rendered for each camera. The summary dialog reports how many shots and matte files were written.
Tips:
The button label changes to Capture All + Mattes when matte rendering is on, so you can see at a glance whether you're about to write a lot of files.
Use this for store-asset turnarounds: set up four cameras around your prop, then capture all of them at 4K with one click.
See also: Runtime API — single capture (loop your own Camera[]).
Render a transparent PNG
When to use: You need a screenshot with an alpha channel — for storefront key art, hero shots over an arbitrary background, or compositing into a marketing layout.
Steps:
Open the Capture tab.
Tick Transparent Background under Capture Options.
Pick an Alpha Source — this is where ScreenshotKit gives you three different ways to derive alpha:
Mode | What it does | Use it when |
|---|---|---|
Cryptomatte Only | Uses the Cryptomatte alpha pass. Sharp geometry edges, no bloom or flare in the alpha. | You want a clean cutout that matches geometry exactly. |
Post-Process Only | Renders the scene over black and over white, derives alpha from the difference. Captures bloom, lens flares, and other post effects in alpha. | You want post-process glow / halo to extend past the silhouette. |
Hybrid (default) |
| Most of the time. Best of both. |
Choose PNG or TGA under Settings → File Format (JPEG has no alpha).
Click Take Screenshot.
Result: A transparent image where the RGB is the lit beauty pass and the alpha is derived from your chosen mode.
Tips:
Transparent capture disables post-processing in the standard path by default. The Post-Process / Hybrid modes work around this with the dual black-and-white render trick, so you keep your bloom and grading.
If Cryptomatte alpha isn't available on your render pipeline, Hybrid mode falls back to Post-Process alone and logs a warning.
See also: Runtime API — transparent capture.
Record an animated GIF
When to use: Quick share, social posts, devlog clips, looping previews for store pages.
Steps:
Open the Gif tab.
Expand Capture Camera and assign the camera to record from (defaults to
Camera.mainat runtime).Expand GIF Quality and configure:
Frame Rate: 5, 10, 15, 30, or 60 fps — or Custom up to 244 fps.
Resolution: Full, Half, or Quarter of your base resolution.
Max Duration: how long to record, in seconds.
Loop: whether the output GIF loops.
Color Compression: Low / Medium / High / Ultra — quality vs. file size trade-off.
Enter Play Mode. Press Start Recording in the window, play through whatever you want to capture, then press Stop Recording.
Alternatively, tick Auto-Record on Play to start recording automatically when you enter Play Mode.
Result: A .gif file saved to your configured GIF output folder. The window shows the estimated file size up front and live recording progress while it captures.
Tips:
GIF encoding is threaded — capture stays smooth during Play Mode and the encoder finalizes the file after you stop. Larger / longer GIFs take longer to finalize.
The in-memory frame buffer is capped at 512 MB. If your settings would exceed that, the recorder caps the duration and logs a warning — drop resolution, frame rate, or duration to capture the full take.
For sharp loops, keep resolution at Half and pick Medium or High compression.
See also: Runtime API — GIF recording.
Record an image sequence
When to use: You want frame-by-frame stills for video editing, frame-perfect compositing, or per-frame mattes.
Steps:
Open the Gif tab and expand Sequence Options.
Set Frame Rate, Resolution, Max Duration, and a File Prefix.
Pick an Image Format: PNG, JPEG, TGA, or EXR. JPEG exposes a quality slider; EXR enables HDR float output.
Optionally tick Transparent Background for per-frame alpha, and/or Render Mattes for per-frame Cryptomatte / AOV passes.
Enter Play Mode and click Start Recording, then Stop Recording when done.
Result: A folder of frame_000000.ext, frame_000001.ext, … plus one subfolder per enabled matte pass (e.g. ObjectID/, Normals/, MotionVectors/) when Render Mattes is on.
Tips:
EXR sequences with Output as Float preserve full HDR. Use ZIP or RLE compression under Settings → File Format to control file size.
The recorder warns before overwriting if the output folder already contains frames.
Per-frame matte rendering is heavy — if performance matters, capture without mattes and re-render mattes for the frames you actually need.
See also: Runtime API — sequence recording.
Render Cryptomatte / AOV passes
When to use: You're compositing in Nuke, Fusion, After Effects, or Resolve and you want geometry IDs, lighting components, depth, normals, or motion vectors as separate channels.
Steps:
Open the Mattes tab.
Pick a Cryptomatte Output mode:
Mode | What it writes | When to pick it |
|---|---|---|
Multi-layer EXR (Cryptomatte 1.2.0) | Spec-compliant Cryptomatte EXR with MurmurHash3 IDs and manifest, loadable directly in Nuke / Fusion / AE. | Production compositing. Default. |
Simple RGB24 (PNG and other formats) | Hue-rotated PNG thumbnails — readable as preview images but not real Cryptomatte. | Quick reference thumbnails only. |
Pick a Segmentation Mode (Multi-layer EXR mode):
By GameObject — every unique GameObject gets its own ID.
By Material — every unique material is one ID.
By Layer ID — IDs come from Unity's layer bitmask.
Enable the passes you want from the three groups:
Segmentation: Object ID, Material ID, Layer ID, Alpha
Camera & Depth: Depth (Linear), Depth (Raw), Lightmap
Lighting Components: Diffuse, Specular, Reflection, Refraction, Emission, Shadow, Ambient Occlusion
Data Buffers: Normals, Motion Vectors, World Position, Stencil
Either:
Click Render Selected Passes to render only the matte passes, or
Go back to the Capture tab, tick Render mattes with capture, and take a normal screenshot — every enabled pass is rendered alongside the beauty pass.
Result: One file per enabled pass, named with the pass suffix (e.g. MyCam_ObjectID.exr, MyCam_Normals.png). Multi-layer EXR mode forces .exr for ID passes regardless of the global image format setting.
Tips:
AOV passes need URP for full fidelity. On the Built-in render pipeline, lighting and data-buffer passes fall back to a standard Diffuse render — you'll get a lit image where you expected normals.
For compositing, Multi-layer EXR is what you want. Simple RGB24 exists only because the hue-rotated PNGs are readable as thumbnails.
Depth Linear is normalized 0–1 across the camera's near/far. Depth Raw is the unprocessed Z-buffer.
See also: Runtime API — capture with mattes, Cryptomatte / AOV pass list.
Customize filenames and output location
When to use: You have a naming convention to fit, or your screenshots should land somewhere other than Assets/ScreenshotKit/Screenshots.
Steps:
Open the Settings tab.
Under Save Location, set Save Path. Toggle Project-Relative Path if the path is inside
Assets/. Click Open Folder to verify.Under Filename Format, configure:
Prefix / Suffix: literal text prepended / appended to every filename.
Include Camera Name — appends the source camera's name.
Include Timestamp — appends a timestamp using Timestamp Format (a standard C#
DateTimeformat string; defaultyyyy-MM-dd_HH-mm-ss).Include Resolution — appends
WIDTHxHEIGHT.
The Preview shows what a generated filename will look like.
Result: Every capture (screenshots, GIFs, sequences, mattes) uses this template.
Tips:
All filename parts are sanitized — characters illegal in filenames (
:,/,\, etc.) are replaced with underscores, so camera names likeMain:Render/Camare safe.Under File Format, the Open Folder After Capture option pops the OS file explorer at the output path after every shot — handy when iterating, distracting in long batches.
Runtime API
For driving captures from your own scripts at runtime — for example, a hotkey in a built game, an in-game photo mode, or an automated capture pass at the end of a scene.
All types live in the DaCruz.ScreenshotKit namespace.
Single capture
ScreenshotCapture.Capture returns a CaptureResult with Success, FilePath, ErrorMessage, and Texture fields. The final resolution is settings.width * settings.sizeMultiplier by settings.height * settings.sizeMultiplier.
Capture with mattes
CaptureWithMattes writes the beauty shot plus every pass enabled on settings (Object ID, Normals, Depth, etc.). MatteFilePaths lists every matte file written.
You can also request individual matte textures directly through CryptomatteCapture:
Transparent capture
TransparentAlphaSource values: CryptomatteOnly, PostProcessOnly, Hybrid. The setting field on ScreenshotSettings is ppAlphaSource if you'd rather pull it from the asset.
Sequence recording
To capture individual frames yourself (no automatic loop), call ScreenshotCapture.CaptureSequenceFrame per frame — it returns a Texture2D you encode and save however you like. CaptureSequenceFrameWithMattes adds matte passes per frame into subfolders.
GIF recording
The recorder runs as a singleton MonoBehaviour that survives scene loads (DontDestroyOnLoad). It exposes State, RecordingTime, FrameCount, EncodingProgress, and LastOutputPath for binding UI; and events OnRecordingStarted, OnRecordingStopped, OnEncodingProgress, OnEncodingComplete, OnEncodingFailed.
GifRecorder and SequenceRecorder both refuse to start outside Play Mode.
Reference
Keyboard shortcuts
Action | Default | Where to rebind |
|---|---|---|
Quick Capture (active camera, Game View) |
| Settings tab → Keyboard Shortcuts → Quick Capture |
Scene View Capture (Scene View camera) |
| Settings tab → Keyboard Shortcuts → Scene View Capture |
Both shortcuts let you toggle Ctrl / Shift / Alt modifiers independently and pick any key.
Cryptomatte / AOV pass list
Pass | Group | What it captures |
|---|---|---|
Object ID | Segmentation | Per-GameObject ID, hashed (Cryptomatte 1.2.0). |
Material ID | Segmentation | Per-unique-material ID. |
Layer ID | Segmentation | Unity layer bitmask. |
Alpha | Segmentation | Geometry silhouette. |
Depth (Linear) | Camera & Depth | Linear depth normalized 0–1 across near/far. |
Depth (Raw) | Camera & Depth | Unprocessed Z-buffer values. |
Lightmap | Camera & Depth | Baked lightmap UV-space data. |
Diffuse | Lighting | Diffuse lighting only. |
Specular | Lighting | Specular highlights only. |
Reflection | Lighting | Reflections (env / SSR contribution). |
Refraction | Lighting | Refraction contribution. |
Emission | Lighting | Self-emissive contribution. |
Shadow | Lighting | Shadow map contribution. |
Ambient Occlusion | Lighting | AO contribution. |
Normals | Data Buffer | World-space surface normals (X, Y, Z in R, G, B, remapped from [-1, 1] to [0, 1]). |
Motion Vectors | Data Buffer | Screen-space per-pixel motion. |
World Position | Data Buffer | World-space position per pixel. |
Stencil | Data Buffer | Stencil buffer values. |
Image formats
Format | Alpha | HDR | Lossy | Use when |
|---|---|---|---|---|
PNG | Yes | No | No | General use, transparent screenshots, sharing. Default. |
TGA | Yes | No | No | Pipelines that prefer TGA (some game engines, older comp tools). |
JPEG | No | No | Yes | Smallest files, social media, when alpha isn't needed. Quality slider 1–100. |
EXR | Yes | Yes | Lossless | HDR captures, linear-light compositing, scientific viz. Compression: None / ZIP / RLE. Optional 32-bit float. |
Resolution presets
Built-in presets (editable under Settings → Resolution Presets):
Preset | Resolution |
|---|---|
1080p | 1920 × 1080 |
1440p | 2560 × 1440 |
4K | 3840 × 2160 |
Square Post | 1080 × 1080 |
Reels | 1080 × 1920 |
Add your own with + Add, or click Use Current to capture the current width/height as a new preset.
Menu items
Path | Action |
|---|---|
Tools > ScreenshotKit > Settings Window | Open the main ScreenshotKit window. |
Tools > ScreenshotKit > Open Screenshots Folder | Open the configured save folder in the OS file browser. |
Tools > ScreenshotKit > About (Documentation) | Open the About window with version and links. |
Scene View toolbar overlay: ScreenshotKit | Quick access toolbar inside the Scene View. |
Limits & Troubleshooting
64 megapixel cap per capture. Anything beyond this is rejected up front with a clear log message — at 16 bytes per pixel, larger captures will OOM the editor inside the readback. To work around: lower the Size Multiplier, or capture at base resolution and upscale externally. 8K (33 MP) and 4K at ×2 SSAA (33 MP) fit comfortably; 4K at ×4 SSAA (132 MP) does not.
AOV passes on Built-in render pipeline. The lighting and data-buffer shaders are URP-targeted. On Built-in they fall back to a Diffuse render, so a request for Normals or Motion Vectors will produce a lit image instead. Switch to URP for full fidelity. HDRP is detected and reported but not actively supported.
Transparent capture disables post-processing by default. The standard transparent path renders the camera with an alpha-cleared background, which Unity uses as a signal to skip post-processing. The Post-Process Only and Hybrid alpha sources work around this with a dual black-and-white render — pick one of those if you need bloom / grading in a transparent screenshot.
GIF recording memory cap. The in-memory frame buffer is capped at 512 MB. If your duration × resolution × frame rate would exceed that, the recorder caps the duration, logs a warning, and you get a partial GIF instead of a crash. To capture longer / higher-res GIFs, drop the resolution to Half or Quarter.
GIF finalization takes time. Encoding runs on a background thread after Stop Recording. The window stays responsive but the .gif file is written when encoding finishes — wait for OnEncodingComplete or watch EncodingProgress.
Simple RGB24 vs. Multi-layer EXR Cryptomatte. Simple RGB24 produces hue-rotated PNGs that are not loadable as real Cryptomattes in Nuke / Fusion / AE — they're for thumbnail preview only. Use Multi-layer EXR for actual compositing.
Recording requires Play Mode. GifRecorder and SequenceRecorder both refuse to start outside Play Mode and log an error.
Sequence folder collisions. If your sequence output folder already contains frames, the recorder warns but proceeds. Pick a new folder per take if you don't want previous frames overwritten.
