2 unstable releases

0.1.0 Jun 5, 2022
0.0.0 Apr 9, 2022

#830 in Graphics APIs

21 downloads per month
Used in pufferfish

Zlib OR MIT OR Apache-2.0

42KB
905 lines

fugu

A simple cross-platform rendering library for Rust

Docs Crates.io License

⚠️ DISCLAIMER: fugu is in very early stages of development. APIs can and will change, many basic features are missing, and parts of this README may not reflect the current state of the crate. I would recommend against using this in your projects just yet, but for those brave enough, now is the time for suggestions and feature requests!

Goals

  • Simple, modern, and safe API
  • Fast compile times with clean builds
  • Portability; only depends on core, alloc, and the rendering backend
  • Transparent implementation; internal abstractions are minimal and easy to grok or hack

Non-Goals

  • Windowing or context creation (use glutin, sdl2, etc.)
  • "Advanced" functionality (use wgpu or Vulkan/Metal/DirectX/... directly)
  • Shader translation (use naga or SPIRV-cross)
  • GPU-side safety guarantees; the API is safe Rust but can still produce crashes or UB

Platform Support

Implemented

  • Windows (OpenGL via glow)
  • OS X (OpenGL via glow)
  • Linux (OpenGL via glow*)
  • Android (OpenGL ES via glow*)
  • iOS (OpenGL ES via glow*)

* Untested. These should work in theory, but don't be surprised if they don't. In that case, please open an issue or PR.

Desired

  • Web (WebGL); this should be trivial with glow but a dependency on web-sys may not be ideal
  • OS X/iOS (Metal); Apple has depricated OpenGL, and although OpenGL probably won't go anywhere any time soon, Metal should be used for futureproofing

Acknowledgements

Dependencies

~2–3.5MB
~75K SLoC