Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add NSI API? #30

Open
virtualritz opened this issue Dec 19, 2024 · 1 comment
Open

Add NSI API? #30

virtualritz opened this issue Dec 19, 2024 · 1 comment

Comments

@virtualritz
Copy link

virtualritz commented Dec 19, 2024

TLDR; Only add this API and get LuisaRender directly integrated into Maya, Houdini, Katana, Cinema4D and Gaffer.

Is your feature request related to a problem? Please describe.

  • Sending 'live' scene data from a DCC app (Maya, Houdini, etc.) to LuisaRender.
  • Writing scene data out in a flexible/high-end VFX pipeline-ready format for sending off to a render farm that runs LuisaRender or to render headless, via CLI.

NSI is an open, compact (10 functions), node-based (pure) C API for 3D DCC apps to communicate with offline renderers. It was inspired by/supersedes the RenderMan API in the 3Delight renderer.

The API does not distinguish between scene description and scene edits (i.e. in an interactive context where a scene is edited inside a DCC and the viewport is contstantly updated). It is also stateless. A running render takes a copy of the scene graph so the scene can be edited while the render is running and edits synced with the running render, on request.

It is designed to be easily bound to other languages (3Delight e.g. ships with NSI Lua & Python bindings, so scenes can be described as as series of Lua or Python calls). This makes the API a good choice for integrating the renderer into custom pipelines.

Describe the solution you'd like

Add the NSI hooks to populate/edit the scene graph of LuisaRender and expose these as a C binding.

This would allow sending data from DCCs to LuisaRender via the existing OSS plug-ins that use this API (see below).

Describe alternatives you've considered

There are no good alternatives, IMHO (I wrote three high-end offline renderer integrations from Maya/XSI/custom DCC for feature film VFX from scratch and was a major contributor to an OSS one, over 15 years).
Something like USD's Hydra, API wise, is a total PITA for a user of the API, in comparison.

On a sidenote, as there is a USD Hydra delegate for NSI, adding NSI support to LuisaRender would also mean hooking the renderer into USD via Hydra as a side-effect, for free.

Additional context

There are OSS plug-ins that use NSI for:

These would require minimal changes (mostly shaders-related as NSI is built around the idea that a renderer has OpenShadingLanguage support) to work with a 3rd party NSI implementation.

  • Gaffer, ImageEngine's OSS lighting/look dev tool ships with NSI support. I.e. this would probably be the tool most users of LuisaRender would choose if they wanted to just render/lookdev files with a GUI front-end that directly integrates with the renderer.

The NSI API has been battle-prooven in production in the 3Delight renderer in the last decade in many VFX facilities around the planet. If you watched any VFX-heavy blockbusters or series you will have seen VFX where data went through the NSI API (i.e. was rendered with 3Delight).

@Mike-Leo-Smith
Copy link
Contributor

Hi, @virtualritz

Thank you for the info. I’ll check if it’s possible to bridge NSI.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants