#gamedev #graphics #engine #3d

three

Three.js inspired 3D engine in Rust

5 releases (3 breaking)

Uses old Rust 2015

0.4.0 Jan 11, 2019
0.3.1 Mar 12, 2018
0.3.0 Feb 24, 2018
0.2.0 Jul 6, 2017
0.1.0 Jun 9, 2017

#313 in Game dev

Download history 44/week @ 2021-02-26 28/week @ 2021-03-05 33/week @ 2021-03-12 46/week @ 2021-03-19 42/week @ 2021-03-26 34/week @ 2021-04-02 42/week @ 2021-04-09 62/week @ 2021-04-16 48/week @ 2021-04-23 42/week @ 2021-04-30 23/week @ 2021-05-07 28/week @ 2021-05-14 37/week @ 2021-05-21 39/week @ 2021-05-28 38/week @ 2021-06-04 40/week @ 2021-06-11

173 downloads per month

MIT/Apache

665KB
7.5K SLoC

three-rs

Build Status Docs Crates.io Gitter

Totally not inspired Rust 3D library! Ok, maybe, just a tiny bit... by Three.JS.

If you a looking for something simple to prototype 3D graphics with, you found it.

Screenshots

Aviator CarObj glTF-skinning

Motivation and Goals

Three-rs is focused at the ergonomics first and foremost. Being able to prototype quickly and code intuitively is more important than capturing all the 3D features. We already have a solid foundation with gfx-rs, so let's make some use of it by providing a nice higher-level abstraction.

We do leave the room for optimization opportunity here. Given the low-level declarative style of the API, the implementation can do a lot of tricks to ensure decent performance by default:

  • use of efficient low-level native graphics APIs
  • reordering the calls into passes, minimizing state changes
  • automatic instancing

Interestingly, you can observe an new trend in rust-gamedev community to mimic existing libraries: Amethyst was created to be Rust version of Autodesk Stingray engine (formely Bitsquid), ggez is a re-interpretation of Love2D engine, and now three-rs attempting to capture Three.JS usability. This is not to say that we failed to find our own path, I just see the current step inevitable.

License

Licensed under either of the following terms at your choice:

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~21MB
~257K SLoC