#interface #bindings #auto-generate #scene #3delight #illumination #research

sys nsi-sys

Auto-generated bindings for Illumination Research’s Nodal Scene Interface – ɴꜱɪ

18 releases

0.8.0 Oct 27, 2023
0.7.1 May 1, 2023
0.7.0 Apr 16, 2023
0.2.1 Oct 19, 2022
0.1.0 Mar 11, 2020

#3 in #illumination

Download history 2/week @ 2024-02-09 66/week @ 2024-02-16 26/week @ 2024-02-23 26/week @ 2024-03-01 20/week @ 2024-03-08 20/week @ 2024-03-15 22/week @ 2024-03-22 40/week @ 2024-03-29 16/week @ 2024-04-05 10/week @ 2024-04-12 11/week @ 2024-04-19 16/week @ 2024-04-26 12/week @ 2024-05-03 14/week @ 2024-05-10 22/week @ 2024-05-17

65 downloads per month
Used in 7 crates (via nsi-core)


118 lines


Build Documentation Crate Chat Maintenance

Auto-generated Rust bindings for Illumination Research’s Nodal Scene Interface – ɴsɪ.

You should not need to use this crate directly except for two reasons. You are likely either:

  • a masochist who wants to use the C-API directly from Rust.
  • Not happy with my high level Rust binding (see below) – consider opening an issue here instead.
  • writing a renderer that exposes an ɴsɪ C-API.

High Level Bindings

There are high level Rust bindings for this API in the ɴsɪ crate.

Differences From The C API

All enums have been rustified – they were mapped to actual Rust enums.

Postfixes were stripped on enum and struct type names. E.g.:


Prefixes and postfixes were stripped on enum variants. E.g.:


Rationale: make code using the bindings a bit less convoluted resp. easier to read.

Finally, NSIParamFlags is a bitflags struct that wraps the NSIParam* flags from the C-API for ergonomics.

Compile- vs. Runtime

The crate builds as-is, with default features.

However, at runtime this crate requires a library/renderer that implements the ɴsɪ C-API to link against. Currently the only renderer that does is 3Delight.


  • download_lib3delight – Fetches the dynamic library version of 3Delight 2.1.2 for Linux, macOS or Windows.

    This can be used as a fallback, to build against, if you do not have the renderer installed on your system. But it is an old version of 3Delight and foremost a CI feature.

    It is instead suggested that you download a 3Delight package for your platform & install it. This will set the DELIGHT environment variable that the build script is looking for to find a locally installed library to link against. Free version renders with up to 12 cores.

    This will also install 3Delight Display which you can render to, progressively – useful for debugging.

  • link_lib3delight – Links against the dynamic library version of 3Delight. Requires the DELIGHT environment variable to be set.

  • omit_functions – Omit generating bindings for the API's functions. This is for the case where you want to expose your own C-API hooks from your renderer.


Apache-2.0 OR BSD-3-Clause OR MIT OR Zlib

at your option.


~38K SLoC