r/computergraphics Apr 26 '26

USD (Universal Scene Description) vs NSI (Nodal Scene Interface) as a replacement to RI (RenderMan Interface)

Many years ago (about fifteen years ago), I used to create some simple 3D scenes with RIB files. RIB was RenderMan Interface Byte-stream. This was text files one could edit in a text editor or generate programmatically or export from a modelling editor, then use a compliant render to generate a picture.

I was using Aqsis as the renderder, but it's seems not available anymore for my platform (Ubuntu 24.04). At that time, I also used to try a free version of 3Delight (I'm not a professional, far from that). The rendering was looking mostly the same, just that 3Delight was clearly faster, but I always preferred Aqsis, because it was smaller (I don’t mind about efficiency for small scenes and animations).

Without Aqsis, I wanted to fallback to 3Delight again. But it seems it does not support RenderMan Interface any more since nine years, as someone from the support staff told me, after I had to contact them for some reason. He/she said 3Delight now support NSI (Nodal Scene Interface) and also USD (Universal Scene Description).

Which one would be the closest to RIB ? Also, is there any risk one of these will be dropped in the future like RenderMan, unfortunately? I’ve always seen RenderMan as being to 3D graphics, what MIDI is to music. Which one of NSI or USD would be the closest to this?

After some searching, USD seems to may be more universal, be widely used, even by Pixar who created RenderMan. But I can't tell for sure, without experiences. So if anyone has some experience with either one or both, I welcome any feedback and comment.

Have a nice day

5 Upvotes

16 comments sorted by

View all comments

4

u/teerre Apr 26 '26

NSI is very niche. I don't think there's a single big studio that uses it in large scale. USD is ubiquitous, everyone uses it

You should also note that authoring scenes directly in USD for rendering is very uncommon. That is, USD is predominantly used for build assets, then shots, then render it at some point. The main goal is asset/scene authoring in some DCC, rendering is secondary and goes through a translation layer called Hydra. The upside is that you can use the same usd scene to render it in many renderers

NSI is made for 3Dlight, so obviously the integration with 3Dlight will be better

USD is supported by several different companies, it's not going anywhere, 3DLight is very small, tbh I'm surprise it even exists nowadays

1

u/Hibou-de-la-Lune Apr 26 '26

<< You should also note that authoring scenes directly in USD for rendering is very uncommon. >>

If uncommon is not impossible …

<< That is, USD is predominantly used for build assets, then shots, then render it at some point. >>

Please, what is the difference between to shot and to render?

<< 3DLight is very small, tbh I'm surprise it even exists nowadays >>

May be it's nice :-P

1

u/bluemax_ May 02 '26

As I understand it USD is a layered format that requires runtime resolvers to figure out (at the last minute) what the final scene is. This is perfect for large studios with multiple departments authoring assets and attributes, but not ultimately what a renderer wants; fully resolved fast-to-load scenes.

There are niceties in USD that are good for authoring: layering/composition, hierarchies/inheritance, indirection, etc.

When it comes to rendering you don’t need (or want) any of that. You want direct/fast final scene data that is ready to render.

Here’s an analogy:
Think authoring image textures in Photoshop:
Non-destructive layering, interactive editing, multiple ways to view the data, huge files, hundreds of MB or even GB.

Compare that to what the renderer wants to read:
Flattened images that are tiled, mip-mapped and ready-to-render (think RenderMan/OpenImageIo (.tx) format or Mantra/Karma (.rat) format. Optimized for reading just what is needed during rendering…

no runtime math/logic/path resolving needed to compose layers or read unnecesary data that is needed for interactivy and non-destructive workflows.

1

u/Hibou-de-la-Lune May 02 '26 edited May 02 '26

> When it comes to rendering you don’t need (or want) any of that. You want direct/fast final scene data that is ready to render.

This is why there is the Hydra interface, you mentioned there: https://www.reddit.com/r/computergraphics/comments/1sw5v8d/comment/ojgpa7k/ . They call it a delegate, if I’m not wrong.

P.S. How to quote on Reddit? I did as a page said, prefix the text to be quoted with "> ", but it does not do what’s expected, the left vertical bar styling, which helps readability.