A practical guide for artists

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.

DESKTOP 1.2.0NO MODEL NEEDED TO STARTACES EXR · HDR10 · HLG

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.

1 / LookOpen a shot, shape its HDR
→
2 / CheckRead it on the scopes
→
3 / DeliverACES master, HDR10 or HLG
Estimation, not a perfect restoration.Once detail is clipped away there is no unique original to recover. RUDRA marks the pixels it invented, so you can see where it estimated and where it kept your source. Always compare.

Choose where to start.

This guide covers the native desktop app, 1.2.0. See What’s new for the changes since Beta 2.

02 / Set up your workspace

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.

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

PartForNotes
Any DirectX 12 GPU (DirectML) on Windows; Apple silicon on a MacThe learned ACES 2.0 modelOn 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 moreAI 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 isOn an SDR screen, choose the SDR 100 monitor; the master is unchanged.
FFmpeg / FFprobeMovies in and outIncluded in both packages; or install it and put it on the PATH.

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 →
03 / Optional

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)”).

ModelWhat it doesUse it for
Learned ACES 2.0Inverts the ACES 2.0 SDR view and rebuilds clipped highlightsMost 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 filledEvery 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 brightnessHero 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….

Model terms.The app and the 1.0 models are Apache 2.0 (fxtdstudios/rudra-models); each model shows its licence before you download it. Each one shows its licence in Model packages before you download it.
04 / Find your way

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.

TabWhat is on it
1 LookThe monitor (SDR 100 or HDR 1000) and four trims: Strength, Peak, Exposure, Contrast. Copy look, Paste, Reset.
2 CheckThe 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 DeliverGrading master, HDR10 movie, Broadcast HDR or Custom…, the file, and Render.

The viewer bar

ControlWhat it does
Hold BShows 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.
ScopesShow 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

KeyDoes
SpacePlay / pause
,   .Previous / next frame
B (hold)Original SDR
WWipe
FFit
Ctrl+BAdd the shot to the batch queue
?Every shortcut
05 / Learn by doing

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.

ReadingWhat it tells you
PeakThe brightest pixel, in nits. An HDR10 1000-nit master should not need much more.
AverageThe frame’s average light (what MaxFALL counts). A big jump between shots is visible to viewers.
Brighter than SDR whiteThe share of the frame above diffuse white (203 nits) — the light the SDR could not hold.
Outside P3-D65Colours beyond the gamut HDR10 and Dolby Vision masters are graded in.
Waveform · Histogram · Vectorscope · RGB paradeWhere 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.
Your screen and your file are different things.An SDR monitor cannot show HDR brightness, and a screenshot is not proof the master is right. Review the file in a colour-managed HDR workflow.
06 / Deliver your work

A master.
In your folder.

On 3 Deliver, pick one of four choices, check the file path, and Render. Nothing is ever overwritten.

ChooseYou getFor
Grading masterACES 2065-1 EXR (ST 2065-4: AP0, half float), one per frameYour colourist, compositing, an ACES pipeline
HDR10 movieHEVC 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 HDRHLG ProRes 422 HQBroadcast 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 XMLAnything 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.

For moving shotsPlay the whole result, not a few frames. Watch for flicker, unstable grain and changes around bright edges.
07 / Optional advanced workflow

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.

You do not need to train to use RUDRA.The app works without a model, and the learned ACES 2.0 model is a free download inside it. Continue here only if you have HDR reference data and want to run a measured experiment.

1. Gather the right dataset.

What you haveWhat to do
Scene-linear EXR / Radiance HDRConfirm colour space and luminance scale. Float values alone do not establish real brightness.
PQ / HLG HDR mastersRecord transfer, primaries, diffuse white, and mastering ceiling. Review the scanner’s interpretation.
Camera logConvert to correctly interpreted scene-linear EXR first using your colour pipeline.
SDR-only JPEGs or videosNot 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.exr

This 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.

1 Scan2 Build pairs3 Split scenes4 Verify data5 Train backbone6 Train shadow gate7 Benchmark

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.

Dataset and model rights still matter.Check the source-code, dataset, and starting-checkpoint licences separately. Training on your own footage does not automatically remove existing restrictions or grant commercial rights.
08 / Release notes

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.

09 / Keep moving

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.