V-Ray optimization guide: Irradiance Map, Light Cache, UHD Cache

V-Ray's Global Illumination (GI) settings dictate per-frame render time more than almost any other configuration choice. For archviz still renders, calculating GI from scratch on every frame is wasteful — the same Irradiance Map and Light Cache can be reused across an animation, dropping per-frame render time by 40–70% depending on scene complexity. This page walks through the GI caching patterns that work best on a distributed render farm: pre-calculating GI locally before upload, reusing saved caches, the trade-offs between Irradiance Map, Light Cache, UHD Cache, and Brute Force, and how to package EXR output with render elements via the V-Ray Frame Buffer.
This guide applies to V-Ray for 3ds Max, V-Ray for Maya, V-Ray for Cinema 4D, and V-Ray for Houdini — the GI patterns are consistent across DCCs. Per-DCC setup details live in the relevant setting-up-* doc — see cross-references below.
A note on V-Ray version: the workflows described here are current through V-Ray 6.x (released 2022) and V-Ray 7.x (released 2024). Earlier V-Ray Next (V-Ray 4.x) workflows used slightly different parameter names but the same underlying caching pattern. For V-Ray beta or pre-release, verify parameter names against the Chaos documentation before relying on this guide.
Why GI caching matters on a render farm
V-Ray's GI calculation is two-phase: a "prepass" phase that samples indirect light across the scene (writing to a cache), and a "final" phase that uses the cache to render the actual pixels. For a single still image, both phases run during one render. For an animation, recalculating GI from scratch on every frame causes two problems:
- Wasted compute. The indirect lighting in an architectural scene typically changes very little from frame to frame. Recalculating it 250 times for a 10-second animation wastes roughly 60% of total render time.
- GI flicker. Each frame's GI sample distribution is slightly different (due to randomness), causing subtle frame-to-frame brightness shifts in indirect-lit areas — the classic "flickering archviz animation" failure mode and one of the most common quality complaints on uncached animation submissions.
The solution is to calculate GI once across the entire animation, save the result to a cache file, then have every frame's final render read from the cache. This is significantly faster and eliminates flicker.
On a render farm specifically, the cache file is small (typically 10–500 MB), so it travels with the project upload cheaply. Caching front-loads the cost to your workstation, where you have full control over the calculation parameters and the calculation only happens once.
GI methods quick comparison
V-Ray supports several GI methods for the "primary" (camera-visible) and "secondary" (indirect bounces) engines. The four most commonly used on the farm:
| Method | Primary engine | Secondary engine | Best for | Trade-off | |---|---|---|---|---| | Irradiance Map + Light Cache | Irradiance Map | Light Cache | Archviz stills and animation | Slowest setup, lowest per-frame time; needs prepass | | Brute Force + Light Cache | Brute Force | Light Cache | Complex lighting, fast iteration | Higher per-frame time, no flicker for animation | | Brute Force + Brute Force | Brute Force | Brute Force | High-quality stills, no GI cache files | Slowest per-frame, highest quality | | UHD Cache (V-Ray 6.x+) | (varies) | UHD Cache | Modern simplified workflow | Newer, may differ from established pipelines |
The recommended pattern for archviz animation on our farm: Irradiance Map (primary) + Light Cache (secondary), with both pre-calculated and saved before submission. For one-off product stills where setup time matters more than per-frame time, UHD Cache or Brute Force + Light Cache is a faster way in.
Pattern 1: Pre-calculate Irradiance Map + Light Cache for still images
For a single high-quality still render:
- Configure GI settings locally. - V-Ray → Global Illumination → enable. - Primary engine: Irradiance Map. - Secondary engine: Light Cache. - Irradiance Map preset: Medium (or higher for hero shots). - Light Cache: 1000 subdivs (default), 0.02 sample size.
- Set both modes to "Single frame" in the Mode dropdown of each engine.
- Enable "Save to disk" for both Irradiance Map and Light Cache. Set the file paths to a
gi/subfolder inside your project — for example,gi/scene_v01_ir.vrmapandgi/scene_v01_lc.vrlmap.
- Render the scene locally at the target resolution (or a reduced resolution if scene complexity makes a full-res calculation infeasible — V-Ray's GI quality is mostly resolution-independent for these caches).
- Verify cache files were written. Check the
gi/folder for the.vrmapand.vrlmapfiles. Empty or zero-byte cache files mean the prepass failed silently — re-run and watch the V-Ray log for warnings.
- Switch modes to "From file" for both engines, pointing to the saved cache files.
- Disable "Save to disk" so the worker doesn't try to re-save. This would fail if the worker can't write to the path, and the resulting error usually presents as a generic "render failed" without an obvious cause.
- Package the project including the
gi/folder, archive, and upload.
The worker reads the GI caches at render time and writes the final image. Per-frame render time is significantly lower than if the worker had to calculate GI from scratch, and the cache files are tiny relative to the project archive so there's no meaningful upload overhead.
Pattern 2: Animation with Animation (prepass) + Animation (rendering) — V-Ray Next workflow
For V-Ray archviz animation (the most common farm use case), V-Ray Next introduced a dedicated two-mode workflow that's the de facto standard through V-Ray 6.x and 7.x:
- Configure prepass. - V-Ray → Global Illumination → Primary engine: Irradiance Map. - Irradiance Map → Mode: Animation (prepass). - Secondary engine: Light Cache. - Light Cache → Mode: Single frame (Light Cache is recalculated per frame at low cost; this is fine and avoids cache-size bloat). - Set the Frame Range for the prepass to match your animation range. - Set the output path for the Irradiance Map cache files to
gi/scene_v01_ir_<frame>.vrmap. V-Ray writes one cache per prepass frame.
- Run the prepass. On your workstation, render the full animation range. V-Ray skips actual frame output — only the cache files are written. This step is the slow one; budget time accordingly. For interior archviz, expect prepass time to be 20–40% of what a full uncached render would take.
- Compile the per-frame cache files. Most V-Ray versions automatically merge per-frame Irradiance Maps when switched to "Animation (rendering)" mode. Some workflows require a manual merge step using the Irradiance Map merge utility (V-Ray menu → Tools → Irradiance Map → Merge IRR Maps). Result: one merged
.vrmapcovering the full animation range.
- Switch mode to Animation (rendering). Point the Irradiance Map to the merged cache file.
- Disable cache save. The merged file is your source of truth.
- Package and submit. The worker reads the merged Irradiance Map for every frame, calculates Light Cache fresh per frame (cheap), and renders the final image. Per-frame render time on the farm is typically 40–60% lower than uncached, and frame-to-frame GI flicker is eliminated.
A small optimization for very long animations: calculate prepass at every Nth frame (e.g., 1 in 5) instead of every frame. V-Ray interpolates between sparse prepass frames at render time — smaller cache, faster prepass, with a quality cost usually invisible for archviz.
Pattern 3: UHD Cache (V-Ray 6.x simplified workflow)
V-Ray 6.x introduced UHD Cache as a simpler alternative to the Irradiance Map + Light Cache combination. UHD Cache combines the primary and secondary GI passes into a single unified caching system, removing the need to configure two engines independently.
When to use UHD Cache:
- New projects authored in V-Ray 6.x+ — the workflow is simpler to set up than Irradiance Map + Light Cache.
- Mixed scene types where you'd otherwise have to swap GI methods (e.g., interior + exterior in the same animation).
- Faster iteration during scene-setup phases, before locking down final-quality settings.
When to stay with Irradiance Map + Light Cache:
- Existing V-Ray 4.x / 5.x pipelines where the Irradiance Map + Light Cache workflow is already validated and producing the look you want.
- Maximum-quality stills where Irradiance Map's interpolation gives a cleaner result than UHD Cache's adaptive sampling.
- Studios with extensive shot libraries keyed to specific GI cache formats.
Configuration for UHD Cache:
- V-Ray → Global Illumination → primary engine: switch to UHD Cache (in V-Ray 6.x+).
- Configure quality presets (Low / Medium / High). Medium is a sensible default for most scenes.
- Enable "Save to disk" for the UHD Cache.
- Pre-calculate on your workstation and include the cache file in your project upload.
- Switch mode to "From file" and disable save before packaging — same pattern as Irradiance Map.
Pattern 4: Brute Force when GI caching isn't viable
Some scenes don't cache well — typically scenes with extreme dynamic lighting (volumetrics, area light arrays, animated emissive surfaces) where GI samples vary too much frame-to-frame for caching to be helpful. For these, Brute Force is the right choice:
- Primary engine: Brute Force, Secondary engine: Light Cache.
- Set Brute Force subdivisions high enough to clean up noise (typically 8–24, calibrated locally).
- No cache files needed. The worker calculates everything per frame.
- Per-frame time is higher than Irradiance Map + Light Cache, but quality is consistent and there's no risk of cache-related flicker.
This pattern is preferred for VFX work, complex lighting setups, and stills where the time-to-result is less important than the look. It's also more forgiving when scenes have heavy modification cycles — no caches to invalidate.
Method-vs-use-case decision guide
A simplified decision flow for picking a GI method:
| Your scene | Recommended method | |---|---| | Archviz exterior still | Irradiance Map + Light Cache, pre-calculated, "From file" mode | | Archviz interior still | Irradiance Map + Light Cache, pre-calculated, higher samples | | Archviz exterior animation | Animation (prepass) + Animation (rendering) | | Archviz interior animation | Animation (prepass) + Animation (rendering), pre-calc 1 frame in 5 | | Product visualization | UHD Cache (V-Ray 6.x+) or Brute Force + Light Cache | | VFX shot with volumetrics | Brute Force + Light Cache, no cache files | | Quick iteration / lookdev | UHD Cache, Low preset | | Hero shot for portfolio | Brute Force + Brute Force, high samples |
GI cache must be calculated before upload
A point worth restating because it's the single most common cause of avoidable cost on V-Ray farm jobs: GI caches must be calculated on your workstation before the project is uploaded. There is no equivalent "calculate GI on the farm first, then render" mode that works efficiently across distributed workers. GI calculation is sequential, not parallel — each Irradiance Map sample depends on previous samples, so the prepass cannot be distributed.
The two failure modes we see most often:
- Mode left on "Single frame" in an animation submission. Every worker independently re-runs the same expensive prepass per frame, wasting most of the parallelism the farm provides. A 250-frame animation that should take an hour ends up taking eight.
- Cache file paths point to a workstation drive letter (e.g.,
D:\my-projects\gi\scene_ir.vrmap). The worker can't resolve the path and falls back to "calculate GI" mode silently, often with GI flicker because each worker calculates a slightly different prepass.
The fix in both cases is the same: pre-calculate locally, set mode to "From file" or "Animation (rendering)," use relative paths (./gi/scene_ir.vrmap), and verify the cache files exist in the project folder before packaging.
For studios doing recurring animation work, the prepass cost is amortized: calculate once, render hundreds of frames against the same cache.
Reuse Irradiance Map to cut render time
A pattern that's not obvious to first-time V-Ray farm users: once you've calculated an Irradiance Map for a scene, you can reuse it across re-renders for camera tweaks, look-dev iterations, and even lighting variants — as long as the scene's geometry and light positions haven't materially changed.
Concretely: if you render an archviz scene with a specific Irradiance Map, then a week later the client asks for a daylight variant that swaps the sun direction by 20 degrees, you do not need to recalculate the Irradiance Map. The existing map covers indirect light samples across the geometry; the direct-light component (sun, area lights) is recalculated per render anyway. Keep the cached .vrmap file and re-submit with only the lighting changed.
Where you do need to recalculate:
- Geometry changes. Moved walls, added furniture, changed scale — the Irradiance Map sample points are now wrong.
- Major light setup changes. Added or removed a large area light, changed dome HDRI, switched between exterior and interior lighting setup.
- Material albedo changes that affect indirect bounce. Changing a white wall to dark wood will affect indirect light visibly. Subtle hue tweaks usually don't.
For animation, the merged .vrmap is reusable across the same camera path for re-rendering variants. We've seen studios get 4–5 renders out of a single calculated Irradiance Map across a typical revision cycle.
Output formats: EXR + render elements via V-Ray Frame Buffer
Once GI is configured and the scene is ready to submit, the next decision is how to write the output. For anything destined for a compositing or grading workflow, the answer is the V-Ray Frame Buffer (VFB) writing multi-channel EXR with render elements, not direct-to-PNG/JPG from the renderer.
Why VFB + EXR + render elements:
- Compositing flexibility. Each render element (diffuse, reflection, refraction, GI, specular, ambient occlusion, Cryptomatte, Z-depth, world position, motion vectors) lands as a separate channel inside one EXR file. The compositor pulls only what they need without re-rendering.
- No bake-in of post effects. Lens effects, color grading, exposure, glare, and bloom that VFB previews are kept as adjustable values in the EXR header — they don't get burned into the pixels at render time.
- Lossless precision. EXR is half-float (16 bit) or full-float (32 bit) per channel. Highlights aren't clipped, shadows aren't crushed, and re-grading is non-destructive.
- One file per frame, not one file per channel. Multi-channel EXR keeps frame numbers aligned across all elements automatically.
How to configure on the workstation before submission:
- Open V-Ray Frame Buffer settings. In 3ds Max: V-Ray tab → Frame buffer. In Maya: V-Ray Common → V-Ray Frame Buffer rollout. In C4D and Houdini: similar location under V-Ray render settings.
- Enable V-Ray Frame Buffer (not the host application's native frame buffer). VFB owns the EXR + render elements writing pipeline; the native frame buffer does not handle render elements correctly for farm output.
- Enable "Save separate render channels" and "Save RGB and alpha" so the beauty pass is written into the same multi-channel EXR. Single-file output is preferred for farm work.
- Set output to OpenEXR (.exr). Bit depth: 16-bit half-float is standard for compositing; 32-bit full-float is useful for VFX with extreme HDR ranges.
- Add the render elements you need. In 3ds Max: Render Setup → Render Elements tab → Add → pick from the V-Ray element list (V-RayDiffuseFilter, V-RayReflection, V-RayGlobalIllumination, V-RayCryptomatte, V-RayZDepth, etc.). In Maya: AOV / Render Elements panel under the V-Ray tab. In C4D and Houdini: Multi-Pass / AOV setup. Always include at minimum: diffuse, reflection, refraction, GI, specular, alpha, Z-depth, and a Cryptomatte if you need per-object compositing.
- Set the output path to a clean
output/subfolder inside your project — e.g.,output/scene_v01.####.exr. Use relative paths only.
- Disable the native renderer's "save image" option. If both VFB save and host save are enabled, you get duplicate files at different paths and your downloaded archive doubles in size.
- Verify locally with a single test frame. Render one frame, open the EXR in a compositor (Nuke, After Effects, Fusion, DaVinci Resolve), confirm all channels are present and named as expected.
Common pitfalls: PNG/JPG output bakes post effects and drops render elements (use only for previews); render elements added but VFB save disabled produces a beauty pass only with no separable channels; per-channel separate EXRs work but make frame matching brittle — multi-channel EXR is the cleaner default.
For very high-resolution stills (8K+), or scenes with 20+ render elements, the EXR file size can grow substantially (200+ MB per frame). Plan download bandwidth accordingly.
Light Cache subdivs vs sample size
Light Cache has two parameters that mainly control quality: subdivs (sample count) and sample size (interpolation radius). Quick guidance:
- Subdivs. Default 1000. For interior archviz, 1500–2500 produces cleaner GI. For exterior, 800–1200 is usually enough. Higher values increase prepass time roughly linearly.
- Sample size. Default 0.02 (2% of scene radius). Lower values (0.01) produce sharper GI detail at the cost of noise; higher values (0.05) smooth out small-scale variation. Don't change without testing — values too high lose contact shadow detail, values too low produce splotchy GI.
For animation prepasses, set "Use Light Cache for glossy rays" → enabled, which produces smoother glossy reflections across the animation and reduces fireflies in glass and metal materials.
Troubleshooting V-Ray GI on the farm
For general troubleshooting that applies across DCCs, see .
- "Irradiance Map file not found" at render. Verify the cache file path in V-Ray settings is relative to the project folder, not absolute. The worker resolves paths from the project root at submission time.
- GI cache file path uses workstation drive letter. Edit the cache file paths in V-Ray settings to use relative paths (
./gi/scene_ir.vrmap) before submission. The Simulate Local Path tool can help validate this — see . - Animation flicker despite using cached GI. Verify the cache mode is set to "Animation (rendering)" on the final pass, not "Single frame" or "Animation (prepass)." Also verify the cache file actually covers the full animation range — a partial cache will cause flicker outside the cached range.
- Worker calculates GI from scratch despite cache being included. Verify "Save to disk" is disabled and Mode is set to "From file" (for stills) or "Animation (rendering)" (for animation). If Save is enabled, V-Ray may attempt to overwrite the cache file at render time and fail.
- UHD Cache file isn't read by worker. Same root cause as Irradiance Map: relative paths only, "From file" mode, Save disabled.
- EXR render elements arrive empty or missing channels. Verify "Save separate render channels" is enabled in VFB settings before submission, and that the test frame on your workstation produced a complete multi-channel EXR. If the workstation version is missing channels too, the issue is upstream of the farm.
- Output EXR is 8-bit per channel. EXR can be written at 8-bit but rarely is — usually this is a misconfiguration in VFB bit depth settings. Switch to 16-bit half-float and re-render the test frame.
Cross-references
- — job-failure troubleshooting
- — render-quality issues including GI flicker patterns
- — upload, submit, download workflow
- — V-Ray for 3ds Max specifics
- — V-Ray for Maya specifics
- — V-Ray for Cinema 4D specifics
- — Simulate Local Path validation tool
- — landing page
- — scattering performance article
FAQ
Q: Do I really need to pre-calculate Irradiance Map and Light Cache locally before submitting to the farm? A: Strongly recommended for animation; optional for stills. GI calculation is sequential and cannot be parallelized across workers, so an uncached animation submission causes every frame to re-run the same expensive prepass, wasting most of the farm's parallelism. For stills, the prepass runs only once per render either way, so the time saving from pre-calculating is smaller — but it's still good practice for reproducibility and to keep render elements stable across re-renders.
Q: My animation has GI flicker even though I pre-calculated the Irradiance Map. Why? A: Three likely causes: (1) the Irradiance Map mode on the final pass isn't set to "Animation (rendering)" — it might be "Single frame," which causes recalculation per frame; (2) the cache file doesn't cover the full animation range; (3) the prepass was calculated at too low a sampling rate, so the cache itself has noise. Fix by re-running prepass with higher samples and verifying the mode on the final pass.
Q: When should I use UHD Cache instead of Irradiance Map + Light Cache? A: UHD Cache (V-Ray 6.x+) is simpler to set up and works well for new projects where you don't have established Irradiance Map + Light Cache settings. Stay with Irradiance Map + Light Cache for existing pipelines or for hero stills where Irradiance Map's interpolation produces a cleaner result.
Q: My Irradiance Map calculation takes 4 hours locally before I can submit. Is there a faster way? A: Three optimizations: (1) reduce Irradiance Map preset to "Medium" or "Low" — for animation, prepass at a lower preset produces a cache that's similar to higher presets after compositing temporal smoothing; (2) calculate the prepass at reduced resolution (50% of final); (3) for very long animations, calculate prepass at every 5th frame and let V-Ray interpolate between them.
Q: Can the farm calculate the Irradiance Map prepass and then render the final pass in one job? A: Not efficiently. The prepass would run on one worker (sequentially), and the final pass would run distributed. You'd pay for one worker's prepass time plus distributed final-pass time, vs. pre-calculating locally for free. The recommended pattern remains: prepass on workstation, final pass on farm.
Q: My scene uses V-Ray Distributed Rendering (DR) locally. How does that translate to the farm? A: V-Ray DR is for splitting a single still across multiple LAN workstations. On the farm, the equivalent is bucket-rendering distribution handled at the queue level — the farm distributes buckets across workers automatically per frame. You don't need to configure V-Ray DR; submit normally.
Q: I'm using Light Cache only (no Irradiance Map) as the primary engine. Is that supported? A: Yes. "Light Cache only" or "Brute Force + Light Cache" patterns are supported on the farm. The Light Cache calculation per frame is fast enough that pre-caching is usually not needed for typical scenes.
Q: My V-Ray version is 4.x (V-Ray Next). Do these workflows still apply? A: Yes, with parameter name adjustments. V-Ray Next used slightly different terminology (e.g., "Pre-pass animation" vs. "Animation (prepass)"), but the underlying caching pattern is identical. The "From file" and "Save to disk" modes work the same. For specific parameter names in V-Ray 4.x, check the V-Ray 4.x documentation; for new projects, V-Ray 6.x or 7.x is recommended.
Q: Why EXR with render elements instead of just rendering to PNG? A: EXR with render elements gives the compositor every channel (diffuse, reflection, GI, Z-depth, Cryptomatte, etc.) inside one multi-channel file per frame. PNG flattens to 8-bit and bakes any post effects into the pixels, removing compositing flexibility. For final-quality output, EXR is the format that keeps your renders editable downstream.
---
