Karma XPU Will Never Run Your VEX Shaders

Karma XPU does not support VEX-based shaders, and the SideFX documentation says it never will. Karma CPU grew out of VEX, the shading language Houdini artists inherited from Mantra, while XPU runs as a separate engine on OptiX and Embree inside the tighter environment of the GPU. Instead of VEX, XPU supports MaterialX and USD Preview Surface. Therefore you have three ways forward: stay on Karma CPU and keep your VEX shaders, rebuild your library in MaterialX so that XPU becomes available to you, or run both in parallel with VEX on older work and MaterialX on new projects.

SideFX wrote that Karma XPU will never support VEX-based shaders at all. Let’s check it out!

Why the Answer Is Architectural

Karma XPU, Image Source: SideFX

Although Karma CPU and Karma XPU share the same render delegate, they follow two different execution paths, and they rest on different foundations.

VEX sits at the core of Karma CPU, the shading language Houdini artists inherited from Mantra. Studios wrote years of shader libraries in it, and Karma CPU still runs them, although SideFX notes that even Karma CPU does not support most VEX shading functions.

Meanwhile, XPU is a newer engine that runs on OptiX and Embree, so it works inside the more limited environment of the GPU. Because of that environment, it drops support for even more legacy features than Karma CPU does. SideFX implemented the two shading systems it does support, MaterialX and USD Preview Surface, in C++ inside the engine itself.

Where Each Shading Type Runs

Shading typeKarma CPUKarma XPU
VEX (inherited from Mantra)YesNo, and never will
MaterialXYesYes
USD Preview SurfaceYesYes
Principled Shader (VEX based)YesNot fully. Expect an approximation at best

Notice the last row, because it catches people out. The Principled Shader appears to work under XPU, so a scene still renders and looks broadly plausible, and the mismatch only shows up when someone compares it against the CPU version. In other words, SideFX describes everything outside USD Preview Surface, MaterialX and Karma specific VOP nodes as something that will either not work, or come out as an approximation at best.

Your Three Options

Stay on Karma CPU. This is a reasonable choice if your VEX shader library is large and stable, or if your scenes are heavy enough that VRAM would be the limiting factor on the GPU anyway. 

Move to MaterialX. This unlocks XPU, and it follows the direction SideFX is taking Karma. The price is the work of rebuilding your library.

Run both in parallel. Keep VEX on shows already in production and use MaterialX on new projects. This needs discipline, because the one thing you must avoid is mixing the two inside a single shot and then discovering the delegate cannot render half of it.

What MaterialX Does Not Do Yet

Image Source: Side FX 

SideFX documentation lists several current limitations in Karma’s MaterialX support, and some of them will decide whether you can move at all.

To begin with, Karma does not support MaterialX light shaders. Volume materials work only on volume primitives such as VDBs, and Karma cannot currently handle Surface and Volume materials on the same primitive. MaterialX nodes carry Color Space parameters, but USD’s Hydra interface treats those as metadata and does not pass them on to the render delegate. In addition, Karma does not support the Compositing nodes, and it does not allow string inputs, even when you simply connect parameter inputs from a material’s public interface.

Migrating Without Breaking a Show

  • Inventory your shader library first. Separate what counts as genuinely custom VEX from what really amounts to a Principled Shader that MaterialX can reproduce. Usually that second group turns out larger than people expect, so it becomes the cheap part of the job.
  • Rebuild a few representative shaders before anything else. Metal, skin and glass will tell you most of what you need to know. Then render them against your VEX originals under identical lighting and compare the results.
  • Do not switch mid production. Instead, lock the delegate per project, and leave running shows alone.

A Cloud Machine Option 

Once your shading path is settled, the hardware question follows from it. If you stay on Karma CPU, what you need is core count and system RAM. If you move to MaterialX and start using XPU, you want GPU VRAM and a capable CPU alongside it, since XPU renders on both devices at once. A service such as iRender offers both kinds of configuration, billed by the minute.

No configuration at iRender or anywhere else will make Karma XPU render a VEX shader. Renting hardware helps you after the shading decision is made, not instead of making it.

Your renders, your rules. Take control of your Houdini workflow with iRender’s dedicated GPU servers. Render with iRender!

FAQ

Does Karma XPU support VEX shaders?

No. The SideFX documentation states that Karma XPU will never support VEX-based shaders at all. XPU is a separate engine built on OptiX and Embree, running in the more limited environment available on the GPU, so it drops support for even more legacy features than Karma CPU does. It supports MaterialX and USD Preview Surface instead, both implemented in C++ inside the engine. 

What shading languages does Karma XPU support?

MaterialX and USD Preview Surface, plus Karma specific VOP nodes such as the Karma Hair Shader. 

Should I migrate my VEX shaders to MaterialX?

It comes down to where your work is heading. MaterialX is the direction SideFX is taking Karma. A studio with a large, stable VEX library and no pressing need for XPU can stay on Karma CPU without any penalty today.

See more: Enscape Video Export on Cloud GPU and the VR Limitation

Written by

The VFXRendering editorial team writes about render farms, cloud GPU rendering and VFX pipelines. Prices, versions and features are read from each vendor’s published pages and dated in the Sources section of each post.

No comments

LEAVE A COMMENT