SDR in.
HDR out.
RUDRA turns SDR images and footage into HDR in three steps: Look, Check, Deliver. It works out of the box with its analytic reconstruction; the optional learned ACES 2.0 model rebuilds more of the light the SDR clipped. Every master says exactly what is in it.
What is RUDRA?
SDR stores a limited brightness range: bright skies, lamps and reflections clip to white. RUDRA reads the SDR through the curve it was made with and inverts it, filling the clipped highlights; the learned ACES 2.0 model, a free download, rebuilds what the inverse alone cannot. Everything the SDR already holds is kept.
Choose where to start.
Open a shot
Install, download the model, and follow the four first-run tips. No training needed.
FOR DELIVERY ↗Deliver a master
A grading master for your colourist, an HDR10 movie, or broadcast HLG — one click each.
FOR CUSTOM WORK ↗Train on your footage
Prepare HDR reference data, train a candidate, and measure whether it improves your shots.
This guide covers the native desktop app, 1.2.0. See What’s new for the changes since Beta 2.
Install. Open.
Start creating.
Install the app, then download a model from inside it if you want one. Still images need nothing else; movies need FFmpeg, which both packages include.
Windows 10 / 11 · x64
Download the installer
Get the 1.2.0 setup file from the official release. A SHA-256 file sits beside each download.
Windows installer ↓Install, then open RUDRA
Follow the installer and launch RUDRA from the Start menu. The builds are not code-signed yet: if SmartScreen appears, choose More info → Run anyway. The first-run check looks at your display and GPU.
Add the learned model (optional)
RUDRA works without it. For more of the clipped highlights, choose Download the model… on the Look tab, or File → Model packages… → Download. See Models.
Follow the tips
A welcome card explains the three steps; the first time you open a shot, four short tips point at each part. Help → Show tips brings them back.
What your computer needs
| Part | For | Notes |
|---|---|---|
| Any DirectX 12 GPU (DirectML) on Windows; Apple silicon on a Mac | The learned ACES 2.0 model | On Windows it runs on the GPU, else the CPU. On a Mac it runs on the CPU, or on the GPU / Neural Engine through Core ML. The GPU also draws the HDR viewer. |
| 16 GB GPU, or a Mac with 16 GB of memory or more | AI fill (experimental) | Only for the optional generative pass; everything else runs without it. On a Mac it runs on the GPU through Metal. |
| HDR display (optional) | Seeing HDR 1000 as it is | On an SDR screen, choose the SDR 100 monitor; the master is unchanged. |
| FFmpeg / FFprobe | Movies in and out | Included in both packages; or install it and put it on the PATH. |
macOS · Apple silicon
Download the DMG
Get the 1.2.0 DMG from the release, open it and drag RUDRA to Applications.
macOS DMG ↓Open it the first time
The build is not notarised yet. If macOS blocks it, open System Settings → Privacy & Security and click Open Anyway.
On a Mac the learned ACES 2.0 model runs as on Windows: download it in the app. For AI fill, run scripts/genfill_setup.sh from the RUDRA source once (Python, the packages and the Wan2.1 base model).
Prefer a portable app? Download the Windows ZIP, extract the whole folder, and open RUDRA.exe.
Next: models →Add
a model.
RUDRA starts on its analytic reconstruction, which needs no model. The learned models download separately, so a new model never needs a new install: RUDRA lists them, downloads one, checks it, and keeps it ready.
Open Model packages
Choose File → Model packages…. The Installed list shows the models on this computer; Available lists the ones you can download, with their size and what they are for.
Download
Click Download beside a model. RUDRA shows the progress, checks every file against its SHA-256, and only then adds it. A failed or cancelled download leaves nothing half-installed; you can resume it.
Use it
Click Use. The model loads once and stays loaded; the status bar says when it is ready and on which device (for example “learned ACES 2.0 (cuda)”).
| Model | What it does | Use it for |
|---|---|---|
| Learned ACES 2.0 | Inverts the ACES 2.0 SDR view and rebuilds clipped highlights | Most shots, once downloaded (about 2 MB). Apache 2.0. |
| Analytic (built in) | The inverse of the curve that made the SDR, with the clipped highlights filled | Every shot, out of the box. The default until a learned model is installed. |
| AI fill v3 (experimental) | A generative pass for large blown regions: the RUDRA LoRA on Wan2.1-VACE-1.3B draws the shape, a small estimator sets the brightness | Hero shots, reviewed frame by frame. Needs the Wan2.1-VACE-1.3B base (from Wan-AI) and a 16 GB GPU. Apache 2.0. |
Where are the models kept?
In your user folder (on Windows, %LOCALAPPDATA%\FXTD Studios\RUDRA\models). Show in folder opens it. To move them, choose another folder in Model packages; RUDRA searches every folder listed there.
Can I use a model I trained?
Yes. Export it as a package (a folder with manifest.json) and choose Add folder… in Model packages. See Train your model.
No internet on this computer?
Download the package on another computer from the model page, copy the folder across, and use Add folder….
Three steps.
Nothing else.
RUDRA opens in Simple: the three steps and the controls most shots need. Full shows every control. Switch with the Simple / Full buttons in the toolbar, or Advanced → on the Look tab.
| Tab | What is on it |
|---|---|
| 1 Look | The monitor (SDR 100 or HDR 1000) and four trims: Strength, Peak, Exposure, Contrast. Copy look, Paste, Reset. |
| 2 Check | The frame in four numbers — Peak, Average, Brighter than SDR white, Outside P3-D65 — and the scopes beside the picture. Grab a still to compare. |
| 3 Deliver | Grading master, HDR10 movie, Broadcast HDR or Custom…, the file, and Render. |
The viewer bar
| Control | What it does |
|---|---|
| Hold B | Shows the original SDR while you hold the key; let go for the HDR. |
| View ▾ | HDR, Original SDR, Wipe, What changed, Invented pixels, False colour. |
| Wipe (W) | The original SDR on the left, RUDRA on the right; the bar says which side is which. Drag the seam, or move it with ← → (Shift for fine steps). It stays where you leave it while you change the peak or the exposure. W or Esc closes it. |
| Fit / 100% | Fit the frame to the window, or see every pixel. Scroll to zoom, middle-drag to pan. |
| Scopes | Show or hide the waveform, histogram, vectorscope and RGB parade beside the picture. |
What Full adds
The analytic route and its Source curves and calibration, region exposure (the Grade tab), the probe, collections, the colour pipeline strip, and every delivery option: format, colour, bit depth, codec, start frame, timecode and reel.
Useful keys
| Key | Does |
|---|---|
| Space | Play / pause |
| , . | Previous / next frame |
| B (hold) | Original SDR |
| W | Wipe |
| F | Fit |
| Ctrl+B | Add the shot to the batch queue |
| ? | Every shortcut |
Your first
HDR shot.
Start with one still or a short clip. Look, check, deliver — then do the rest of the sequence.
Open a shot
Drop a frame, a folder of frames or a movie on the window, or click Choose…. Stills: PNG, JPEG, TIFF, WebP, BMP. Movies: anything FFmpeg reads. Start from the original file; messaging apps recompress.
Pick the monitor
On 1 Look, choose HDR 1000 on an HDR display, or SDR 100 to judge the shot on an ordinary screen. The monitor changes what you see, never the master.
Compare with the SDR
Hold B to see the original SDR; let go for the HDR. W (or View ▾ → Wipe) puts them side by side, SDR left and RUDRA right, with a seam you can drag; and Invented pixels shows where RUDRA estimated what the SDR had lost.
Trim only what the shot needs
Strength — how far from the plain inverse (0 %) to the model (100 %). Peak — a soft limit on the rebuilt highlights. Exposure and Contrast — the whole master. The trims are remembered per shot; Copy look and Paste carry them to the next one.
Check it
On 2 Check, read the four numbers and the scopes. A peak far above your target, or a large share outside P3-D65, deserves a closer look. Grab still keeps a reference to compare shots.
Deliver
On 3 Deliver, pick what you need and click Render. Choose the right delivery →
Read the Check tab in plain language.
| Reading | What it tells you |
|---|---|
| Peak | The brightest pixel, in nits. An HDR10 1000-nit master should not need much more. |
| Average | The frame’s average light (what MaxFALL counts). A big jump between shots is visible to viewers. |
| Brighter than SDR white | The share of the frame above diffuse white (203 nits) — the light the SDR could not hold. |
| Outside P3-D65 | Colours beyond the gamut HDR10 and Dolby Vision masters are graded in. |
| Waveform · Histogram · Vectorscope · RGB parade | Where the light sits across the frame, how much of it sits at each level, colour direction and saturation, and each channel on the PQ scale. |
A master.
In your folder.
On 3 Deliver, pick one of four choices, check the file path, and Render. Nothing is ever overwritten.
| Choose | You get | For |
|---|---|---|
| Grading master | ACES 2065-1 EXR (ST 2065-4: AP0, half float), one per frame | Your colourist, compositing, an ACES pipeline |
| HDR10 movie | HEVC 10-bit MP4, PQ 1000 nits P3-D65, with MaxCLL / MaxFALL and mastering-display metadata (with the learned model; without it, Custom… has the analytic PQ movie) | Streaming, review on HDR TVs |
| Broadcast HDR | HLG ProRes 422 HQ | Broadcast and live-to-air |
| Custom… | Every option: EXR 16/32-bit, ACEScg, DPX 10-bit, PQ 2000/4000, ARRI LogC4, ACEScct, ProRes 4444 / 4444 XQ, SDR 709, Dolby Vision XML | Anything else |
Name the file
One path, as Nuke’s Write takes it: folder, name, #### for the frame number, extension — for example D:\Renders\SH010\SH010_hdr.####.exr. Browse… picks it; Create directories makes a missing folder.
Render, or queue
Render writes this shot now. Add to batch queue (Ctrl+B) keeps the shot with its look and settings, to render many shots in one go from Deliver → Batch queue….
Open it where it goes next
Every render writes its provenance beside it: the model, the trims, the source, the timecode. Read the EXR as ACES 2065-1 in the receiving app.
Start frame, timecode and reel
In Full, the Render card sets the first frame number, the start timecode and the reel name. A movie keeps its own timecode and reel unless you type others. They are written into the EXR header, the DPX header and the MOV.
AI fill (optional)
In Custom…, an EXR still or sequence can get a second, generative pass for large blown regions. It writes a copy beside the master and a review folder; Review fill… pages through master, fill and mask, and flags frames that flicker. Review every frame before it reaches a client.
Conforming from an EDL
Import EDL… in Deliver → Batch queue… takes the edit’s ranges and record timecode into the batch queue, with handles. Retimes (M2) are honoured; short handles are warned about.
Train for
your material.
Training is separate from using the desktop app. It creates a candidate model from HDR reference footage. Better results are something to measure, not something to assume.
1. Gather the right dataset.
| What you have | What to do |
|---|---|
| Scene-linear EXR / Radiance HDR | Confirm colour space and luminance scale. Float values alone do not establish real brightness. |
| PQ / HLG HDR masters | Record transfer, primaries, diffuse white, and mastering ceiling. Review the scanner’s interpretation. |
| Camera log | Convert to correctly interpreted scene-linear EXR first using your colour pipeline. |
| SDR-only JPEGs or videos | Not sufficient for this supervised workflow: the HDR target is missing. |
The pipeline generates SDR/HDR pairs from your HDR material. Include different scenes, lighting, bright regions, shadows, and textures. Thousands of adjacent frames from one shot do not replace independent scenes.
Keep whole scenes separate between training, validation, and testing. Review scene IDs before training. Reserve an additional independent set for final confirmation, especially after repeated experiments.
How should I organise my files?
my_hdr_dataset/
scene_001/
frame_0001.exr
frame_0002.exr
scene_002/
hdr_master.mov
scene_003/
frame_0001.exrThis is an organisational example, not a promise that folders alone set the split. Inspect the inventory and generated scene assignments. Keep source, rights, colour-space, scale, and grading-ceiling notes for each scene.
2. Prepare a training environment.
Use the source repository and Python 3.10–3.13; Python 3.12 is a practical choice. The current driver supports NVIDIA CUDA or CPU, not Apple’s MPS backend. CPU training can be very slow. You also need FFmpeg/FFprobe for video sources and disk space for generated pairs.
Clone the release source and enter its folder:
git clone --branch v1.2.0 https://github.com/FXTD-Studios/RUDRA.git cd RUDRA
Create and activate a Python environment. Install a CUDA-enabled PyTorch build matching your GPU and driver using the official PyTorch selector. Then install the project and evaluation dependencies:
python -m pip install -e ".[metrics]" onnx onnxruntime OpenEXR
python -c "import torch; print('CUDA available:', torch.cuda.is_available())"Show environment commands
Windows PowerShell:
py -3.12 -m venv .venv .\.venv\Scripts\Activate.ps1
If your policy prevents activation, invoke .\.venv\Scripts\python.exe in place of python. macOS/Linux:
python3 -m venv .venv source .venv/bin/activate
3. Preview your training plan.
Choose a new work folder for each experiment. These controls only create commands; they do not start training or upload your data.
Dry run prints the commands; it does not validate footage, GPU, or dependencies. The normal run performs those checks. Step count is a budget, not a quality target.
4. Train, then follow the stages.
Watch the terminal for the active stage, training step, and validation output. Time depends on the GPU, image sizes, and dataset. If verification fails, fix the data rather than bypassing the checks.
Pause and resume safely
Interrupt with Ctrl+C and keep the work folder. Resume the backbone explicitly with --only backbone; it reloads last.pt when available. A normal rerun can skip training if best.pt already exists, even if the intended step budget was not finished.
After changing or extending the backbone, regenerate the shadow gate and benchmarks; previous downstream outputs are stale. Use a fresh work folder for a changed dataset or new experiment. See the training reference for individual stages.
5. Decide whether the model is better.
Look in your work folder for checkpoints/image/, checkpoints/shadow/, and results.json. Keep the learned ACES 2.0 model until the candidate proves useful.
- Compare against both the analytic baseline and the learned ACES 2.0 model.
- Evaluate clean and degraded inputs. The driver’s default benchmark covers the hard condition only.
- Read PU21-PSNR and perceptual scores together; low training loss alone is not approval.
- Inspect unseen scenes and complete sequences for colour shifts, lost detail, and flicker.
- Repeated validation tuning is not independent evaluation. Keep a genuinely unseen final set.
6. Try an approved candidate in the app.
The native app loads an exported model package, not a bare checkpoint. Export the candidate you have evaluated:
Use File → Model packages… to add the exported package folder containing manifest.json. Keep the learned ACES 2.0 model available for comparison and review the first-run checks on the target computer.
What’s new
in 1.2.0.
In 1.1.0
- The viewer bar: f/stop, γ, an SDR | RUDRA wipe, clamp and clip zebras and the Range layer (below), and AI fill: every frame that has a fill shown filled, stepping and playing; with Changes on, what it invented.
- Clean shadows (Deliver › Learned ACES 2.0, off by default): an edge-preserving denoise of the deep shadows, so a push of a few stops is not all grain; the SDR still shows the original within one code.
- AI fill fixes the master in place: when a fill finishes, the originals move to
<master>_before_aifill. Setup… checks the LoRA is the published AI fill v3. - An ACES Metadata File beside every EXR master, and alpha passed through (EXR, 16-bit TIFF, ProRes 4444).
- Playback is prepared in the background ("Preparing playback: N of M"), then Play is real time.
- The master stays at the source's native resolution. To deliver UHD from HD, resize once at the end in your finishing tool (Resolve's Deliver page, Nuke's Reformat) and label it up-converted.
In 1.0.3
- No model inside the package: every model is a download in File › Model packages that shows its licence first. Packages up to 1.0.1 carried the Beta 2 model sdr2hdr_image_v8, which is non-commercial; if you installed one of them, update or delete models/sdr2hdr_image_v8 from the install before commercial work.
- The learned ACES 2.0 model is a preview: in the last published test it graded better at −3 and +3 EV, but at the delivered exposure its highlights sat further from the reference than the analytic result. Compare the two before delivery.
Compare SDR and HDR like in Nuke
The bar under the viewer is the viewer's own: none of it changes the master, a render or a saved project. An amber VIEW badge shows whenever the view is gained, so a screenshot never passes for the grade.
- f/stop and γ: stop the view down or up as in Nuke (Alt+[ and Alt+] half a stop, Alt+E toggles 0 and the last value, Alt+0 resets). The buttons −6 −4 −2 0 +2 jump straight there (Alt+B steps through them).
- A | B: pick SDR (original), Baseline or RUDRA for each side of the wipe; A ⇄ B swaps them (Alt+X). Wipe SDR | RUDRA and stop down to −3 EV: where the original clipped it goes flat grey, RUDRA keeps a gradient.
- Clamped (Alt+K): stripes where the original is clamped: red all channels at code 254 or above, thin orange only some (a sky clipping in blue first), blue crushed at code 1 or below. They mark the same pixels on both sides at any exposure.
- Clipping (Alt+L): yellow stripes where the picture clips on the screen at this exposure and peak.
- Range (Alt+R): every pixel coloured by stops above the SDR white (203 nits): grey is the SDR's own range, then blue, green, yellow, orange and red for each stop up to +4 and over. White hatching marks what the original clamped.
- The line under the bar reads the frame in nits: how much of the original is clamped (per channel) and crushed, RUDRA's peak and how much goes over the SDR white and 1,000 nits, and, inside the clamped area, how far RUDRA took it and how much it left as the plain inverse. Hover a pixel for its original codes, which channels are clamped, and its stops over the SDR white.
Rebuild only highlights and shadows
In Deliver › Learned ACES 2.0, Rebuild only highlights and shadows keeps the model's result only where the brightest channel of the original is at or above τ high or at or below τ low (8-bit codes; 254 and 5 are the model's own bands). Everything between is the plain ACES inverse, which gives the original back pixel for pixel. 256 turns highlights off, −1 shadows. The viewer follows the setting; turn on Changes to see what was rebuilt. Off, the model's own result is used everywhere, as before.
In 1.0.2
- The learned ACES 2.0 model on every platform: its engine is now in the Windows and macOS packages, so the model you download runs straight away (DirectML or the CPU on Windows; the CPU or Core ML on a Mac).
- AI fill on a Mac, on the GPU through Metal. Experimental, as on Windows.
In 1.0.1
- The first published 1.0 build, for Windows and, again, macOS (Apple silicon).
- Wipe: the seam stays where you leave it when you change the peak or the exposure, and the bar says which side is which: SDR left, RUDRA right.
- Clipped highlights: a large blown area, like a sun in a hazy sky, now runs toward white at its centre instead of carrying the sky’s colour all the way in. Measured against HDR references, the colour is closer and the brightness unchanged.
- The model card, README and installers’ “Read me first” are rewritten for artists.
Since Beta 2
- Learned ACES 2.0 model, a free download inside the app: kept loaded on the GPU, in the viewer and every render. The analytic reconstruction needs no model.
- Simple workspace: Look, Check, Deliver, a first-run welcome and four tips. Full keeps every control.
- Model downloads from inside the app, checked before they are used.
- Delivery presets: Grading master, HDR10 movie, Broadcast HDR; Custom… for everything else.
- HDR10 metadata: MaxCLL / MaxFALL on the PQ output, mastering display, Dolby Vision XML.
- PQ 1000 / 2000 / 4000, HLG and SDR 709 outputs; ARRI LogC4 and ACEScct copies; DPX with full headers; ProRes 4444 XQ.
- Per-shot looks with Copy / Paste, and a batch queue.
- Check tab and scopes beside the picture, with RGB parade and gamut.
- Reference stills, EDL conform, timecode and reel in every render.
- Safer renders: files are written as .part then renamed; quitting asks while a render runs.
- Open… takes movies (MOV, MP4, MXF and more) as well as stills.
- Apache 2.0: the code is now free for commercial use; each model states its own licence.
Full notes on the release page.
A few useful
answers.
The result looks almost unchanged. Is it working?
Some shots have little clipping, and RUDRA keeps everything the SDR already holds. Choose View ▾ → Invented pixels to see where it rebuilt light, check the status bar says the model is ready, and try Strength above 100 %.
My HDR export looks dark or washed out elsewhere.
Check the receiving app’s input colour space and viewing transform. ACES 2065-1 EXR is linear AP0, not sRGB. A PQ or HLG movie also needs the matching interpretation and an appropriate display pipeline.
I see “Torch not compiled with CUDA enabled”.
This concerns the Python training or browser workflow, not the compiled desktop app’s DirectML runtime. Install CUDA-enabled PyTorch in the exact environment running training and verify torch.cuda.is_available().
Can I use RUDRA on a Mac?
Yes: the DMG runs on Apple silicon with every Look, Check and Deliver tool, the learned ACES 2.0 model (on the CPU or Core ML) and, set up with scripts/genfill_setup.sh, AI fill on the GPU.
Can I train on a Mac?
The current driver supports CUDA and CPU. Apple silicon can use the CPU option, but this guide does not promise fast or validated MPS training.
Can I use RUDRA commercially?
Yes. From 29 October 2026 the RUDRA code is licensed under the Apache License 2.0, which allows commercial use. Each model has its own licence, shown in Model packages before you download it; the Beta 2 weights stay non-commercial because of their training data. Questions: www.fxtdstudios.com.
Where did Reconstruct, Grade and the probe go?
They are in Full. Click Full in the toolbar, or Advanced → on the Look tab. Simple keeps only what most shots need.
How do I see the tips again?
Help → Show tips. Help → Getting started still has the longer five-page guide.
A model download failed.
Click Download again: it resumes. A file that fails its checksum is deleted and fetched again. Behind a proxy, download on another computer and use Add folder….
Need a hand?
Include your app version, operating system, GPU, input format, export format, and the exact error. Share a small reproducible example only if you have permission to share the footage.
References
Training guide / Research status / Models
This guide does not claim independent HDR-display or clean-machine certification.