Use OpenGL without ever leaking it's state. rin tracks the OpenGL state internally and only does the minimum changes possible when you set any properties from anywhere. No need for push/pops or guards of any kind just set the properties you want to get a new renderer and draw with it.
rin comes with physically based rendering materials based on a roughness/metallicness workflow based on the GLTF reference implementation which means that their use is pretty standard making it easy to import assets like 3d models, materials or maps created for other engines like unreal engine or unity.
rin is based on Rust, a systems language that provides elegant solutions to problems like error handling or memory management. Among other many features, Rust enums or iterators allow to implement certain designs in a much more concise way than in other languages and make certain tasks much easier and readable without compromissing performance.
Rust is a memory and thread safe language which means that you won't ever see again a segmentation fault or have thread data race issues. Multithreaded programming to speed up some tasks is easy and the compiler and Rust data sharing structures automatically take care of maiking sure that there's no wrong multithread or memory accesses.
Rin provides an event management system based on ideas from reactive programming and rust iterators which allow to transform events into other types, filter them by certain conditions, debug and process the events in an easy safe and readable way.
Rust, makes it super easy to use any external dependency. Just add the name of the crate (Rust's libraries) you want to use to the Cargo.toml cnfig file in the root of your project and the next time you compile the crate will be downloaded and compiled with your application
You can find thousands of crates in the official rust repository, crates.io
Rin is divided in several modules that can be used independently. If your application for example uses openGL but not video you don't need to use the full rin crate but you can import whatever modules you are going to use.
Some modules also have features that can be enabled from the application cargo config file allowing even more fine grained modularity
All the rin modules are published as independent crates on crates.io
Through the blender, rinblender and rinblender-gl crates rin can import blender models, materials, animations and many other attributes like physics settings.
The ringui crate provides a nice and fast set of gui elements that in combination with rin's event system allow to quickly adjust parameters of your application.
Rin is developed by Arturo Castro.