3D
Hydra renderers (render delegates)
JOS draws USD scenes through Hydra, USD's rendering layer. A Hydra renderer is called a render delegate. You can pick a different one for the 3D viewport and for each RenderScene.
The renderers that come with JOS
| Renderer | Runs on | Used for | Notes |
|---|---|---|---|
| Storm | GPU (OpenGL 4.5) | The 3D viewport (default) and the material preview | Draws MaterialX, textures, lights, cards and point clouds. Viewport only: RenderScene refuses it. |
| Embree | CPU | RenderScene (default) and the viewport | Gives colour, depth, position, normal and IDs, so every RenderScene pass works. Diffuse lighting. Base colours from textures and MaterialX graphs are evaluated by JOS. Ambient occlusion available. |
Without OpenGL 4.5, the viewport falls back to Embree and says so.
Choosing a renderer
- 3D viewport: the renderer list on the viewer bar, shown in 3D. Storm and Embree come first; other installed renderers are added after them. A CPU renderer draws a quick, coarse picture while you move the view, then a clean one when you stop.
- RenderScene: its renderer list. Empty means Embree. If the chosen renderer isn't installed, the node reports an error listing the ones it found.
Adding other Hydra renderers
JOS lists every Hydra renderer it finds. A renderer is found in:
- the folders listed in Edit > Preferences > Plugins > Hydra renderer folders. Each folder holds a renderer's
plugInfo.json, or one renderer per subfolder (Cycles: its install'shydrafolder, or the install folder itself). Press Add..., pick the folder, press OK: the renderer joins the 3D viewport's list and RenderScene's renderer list at once, without restarting JOS; - the
usd-pluginsfolder next toJOSCompositor.exe; - the folders in USD's
PXR_PLUGINPATH_NAMEenvironment variable. You don't need it in JOS itself, butjos-render,jos-mcpandjos-pythondon't read the Preferences: on a render farm, usePXR_PLUGINPATH_NAMEorusd-plugins.
Under the folder list, the Preferences say what each folder gave: the renderers loaded from it, or why nothing loaded. For example: the folder doesn't exist (a drive not connected), it holds no plugInfo.json, or the renderer's DLL doesn't load. In that last case the system's reason is given, including the names of any DLLs it needs that can't be found. At start-up, a folder that gave nothing also shows a message in the status bar, and the reason goes in the log.
- A renderer added while JOS runs works at once, but its own settings only show in RenderScene's settings after the next start. The 3D viewport's Renderer settings have them at once, and RenderScene still renders on the GPU (its device is auto).
- A folder you remove keeps its renderer loaded until JOS restarts: USD can't unload a plugin.
The renderer must be built for the same USD version as JOS (26.08). A plugin built for another USD version won't load. The Preferences then say that it was built against other versions of the libraries JOS ships.
What you get from a third-party renderer:
- Colour and object IDs, for any renderer.
- Depth, position and normal passes (and therefore motion vectors and holdouts): only for renderers JOS knows how to read them from (Embree and Cycles).
- Frame time limit: with any other renderer, each frame is limited to 10 minutes.
A renderer's own settings
Each renderer lists its own settings (samples, bounces, denoiser...), and JOS shows the ones a renderer lists. They are in folding subsections, as in Blender's render properties: Device first and open, then Sampling, Denoising, Light Paths, Volumes, Path Guiding, Motion Blur, folded. Click a subsection's title to open or fold it. JOS remembers how you left them.
- RenderScene: in its settings, under sections named after the renderer ("Cycles: Device", "Cycles: Sampling"...), shown only while that renderer is chosen. They are saved with the project, can be animated and linked, and can be set from MCP and Python like any other setting (
cycles_max_bounce,cycles_device...). The same sections are in Properties and in the node's own settings, folded, so the node stays compact. A project with a renderer's settings opens on a machine without that renderer, and those settings are dropped there. - 3D viewport: the Renderer settings button next to the renderer list on the viewer bar, in 3D. It opens the same settings for the viewport's renderer, kept for this machine (not in the project). Defaults returns to the renderer's own (from 0.9.7.23 the view really goes back to them; before, the renderer kept the last values until JOS restarted). The popup opens under the button, or above it near the bottom of the screen, and always stays on screen. Storm's own settings show once the view has drawn with Storm (0.9.7.22 could show none for Storm).
The device: GPU or CPU
A renderer that can render on several devices (Cycles) has a device setting: auto, CPU, CUDA or OPTIX.
- auto (the default) uses the best device this machine has: OptiX when the NVIDIA card supports it (RTX cards), else CUDA, else the CPU. JOS asks the renderer which devices really work here.
- A device this machine lacks renders on the CPU. The rendered image says which device drew it: in its metadata,
jos/renderer/device(ViewMetaData shows it). - Changing the device makes the renderer again, so the next frame takes a little longer.
No environment variable is needed.
Notes on specific renderers
- Cycles (Blender's renderer, its Hydra build) isn't included with JOS: install it yourself, then add its
hydrafolder in the Preferences (above). - It renders on the GPU by default (device auto).
- Its light intensities don't follow USD's units exactly, so lights look brighter than in Embree.
- With no light at all, Cycles lights the scene with a grey environment, as other renderers do. With lights and no dome light, the world is black: only your lights light the scene, and the background stays transparent. Add a dome light (a Light3D set to dome) for an environment; as in Blender, a dome makes the background opaque.
- Cycles' own Hydra delegate (its unmodified source) also lights a scene that has lights but no dome with that grey environment: a bug, fixed in the build JOS was tested with. If you build Cycles yourself and see a grey ambient light, add a black dome light.
- Arnold, Karma, RenderMan: they will appear in the list if installed against the same USD version, but haven't been tested yet. Their settings show in subsections named after their keys. Light and shadow linking, and the Outliner's shadow settings, are written in a form they read.
What JOS draws itself
Some things are drawn by JOS and combined with the renderer's picture by depth, whichever renderer you choose:
- textured cards and primitives, in RenderScene with Embree (Embree has no textures); untextured ones are ordinary meshes every renderer draws;
- Gaussian splats and VDB volumes, in RenderScene and the viewport.
Not yet
- Storm and Embree don't honour light and shadow linking. The links are kept for exported scenes.
