A wider range.
A simple workflow.
Meet RUDRA. Turn existing SDR images and footage into an estimated HDR result, review the reconstruction, and save a master for your next creative step.
What is RUDRA?
SDR stores a limited brightness range. Highlights can flatten and shadows can lose detail. RUDRA combines mathematical brightness expansion with a trained model to estimate a wider-range image.
Choose where to start.
Use the included model
Open an image and learn the three-step workflow. No training needed.
FOR CUSTOM WORK ↗Train on your footage
Prepare HDR reference data, train a candidate, and measure whether it improves your shots.
FOR COMFYUI ↗Use Radiance
Read → SDR → HDR Universal → Viewer → Write. A separate ComfyUI workflow.
This guide covers the native desktop beta. Python/browser Studio features may differ. Beta 2 includes the existing sdr2hdr_shadow_v1 model, not newly trained weights.
Install. Open.
Start creating.
The desktop app includes its model. Choose your operating system; still images need no extra tools.
Windows 10 / 11 · x64
Install, then open RUDRA
Follow the installer and launch RUDRA from the Start menu. The default install is for your Windows user.
Check the display and model
Use Help → Check the display and the model. A compatible DirectX 12 GPU can accelerate inference; CPU operation is also available.
Prefer a portable app? Download the Windows ZIP, extract the entire folder, then open RUDRA.exe. Keep its supporting files together.
Apple silicon · macOS 13 or later
Download the disk image
Mac DMG ↓Drag RUDRA into Applications
Open the DMG, copy the app, and launch it from Applications. Intel Macs are not supported by this download.
Review the first-run checks
Open Help → Check the display and the model. Mac HDR output and Core ML support still need broader hardware validation.
Source build · advanced setup
Beta 2 has no Linux installer. Building the native app requires development tools and is separate from the simple desktop installation.
Read Linux build instructions ↗Working with movies?
Install FFmpeg and FFprobe separately. The build needs libx265, prores_ks, and zscale. On macOS, the tested family is FFmpeg 6.1; 7 and 9 are not qualified for this beta.
Run rudra-native ffmpeg-check from the app’s command-line tools before a movie job. Windows movie testing remains incomplete. Follow the release-specific setup notes.
Your first
HDR image.
Start with one still image. Use the included model and make a comparison before committing to a full sequence.
Open your source
Use Open to choose a PNG, JPEG, TIFF, WebP, or BMP. Start with the original file where possible; messaging apps often recompress images.
Reconstruct
On Reconstruct, start with the default settings. Compare RUDRA with Baseline, or use Wipe to inspect the difference.
Baseline is the mathematical expansion without the learned reconstruction. It is a useful comparison, not the original SDR view.
Adjust only what your shot needs
Use Residual strength to control the model’s contribution. Try highlight or shadow recovery modes for a focused change. Reduce strength if texture, contrast, or colour looks unnatural.
Grade and inspect
On Grade, adjust region exposure if needed. Use scopes, the probe, and false colour to inspect brightness. Look closely at bright edges, skin, skies, and dark textures.
Save a master
Go to Deliver, choose the render folder and name, select the image or sequence range, and export. Check the destination shown before starting.
Choose the right export →Read the scopes in plain language.
| Scope | What it helps you see |
|---|---|
| Waveform | Where bright and dark areas sit across the image. A value in nits describes brightness. |
| Histogram | How much of the image occupies each brightness range. |
| Vectorscope | Colour direction and saturation. Notice unexpected colour shifts. |
| False colour / probe | Identify brightness regions and inspect a specific area rather than judging the preview alone. |
A master.
In your folder.
Set the destination before rendering. RUDRA writes to the folder you choose on your computer.
Choose the render folder and name
On Deliver, select your destination and a clear name, such as shot010_hdr. Use a separate folder for each shot or version.
Select the output range
Render a current image first. For a sequence, confirm the loaded frame order and numbering. The current grade is applied to the sequence, so check representative frames.
Choose a format, then export
Open the export options, check the destination and signal description, then select Export. Reopen a result in your finishing application.
| Your next step | Choose | Remember |
|---|---|---|
| Compositing / an ACES pipeline | ACES 2065-1 EXR | Scene-linear AP0. Interpret it as ACES 2065-1 in the receiving app. |
| A linear Rec.2020 pipeline | Linear Rec.2020 EXR | Use the matching input transform in your grading or compositing tool. |
| HDR video review | HDR10, HLG, or ProRes 422 HQ | Requires a movie input and compatible FFmpeg. Check the exported signal and metadata. |
| An sRGB web image | Finish in a colour-managed tool | Tone-map the HDR master to SDR, then encode as sRGB. Do not simply relabel linear HDR as sRGB. |
Do not assume the Python/browser Studio’s export or OCIO controls are available in this native beta. Use the formats shown in your installed application.
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 v0.9.0-beta.2 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 included model until the candidate proves useful.
- Compare against both the analytic baseline and the shipped 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 included model available for comparison and review the first-run checks on the target computer.
A few useful
answers.
The result looks almost unchanged. Is it working?
Some images have little recoverable structure or need little reconstruction. Compare against Baseline, check recovery mode and strength, inspect brightness, and verify the model loaded. A clipped white region does not contain a hidden original image.
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 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. The desktop app’s Core ML inference is a separate capability.
Can I use Beta 2 commercially?
The native code uses PolyForm Noncommercial 1.0.0 and the weights have separate non-commercial terms. Review both licences and obtain appropriate permission for uses outside those terms.
Does Beta 2 contain a new model?
No. It retains sdr2hdr_shadow_v1. The beta updates the native application and packaging, including a highlight-grain correction.
The command-line version says 0.1.0.
Beta 2 has a known legacy CLI banner. Check the desktop executable or Mac bundle metadata, which reports 0.9.0-beta.2.
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 / September 2026 paper / Models
The paper predates the later September experiments and Beta 2 packaging. This guide does not claim independent HDR-display or clean-machine certification.