ombre 0.6.7

Shadowy game and graphics library for Rust
Documentation
Ombre
=====
*Une ombre est née, dans la lueur d'un ciel étoilé..*

Synopsis
--------
Ombre is a "New Jersey" style[^0] library designed for games and graphics
programming on the desktop.

It provides a thin layer of abstraction over the underlying context creation
and graphics frameworks while keeping dependencies to a bare minimum, and
trying to do the few things it does *really well*.
Ombre also comes with support for various simple file formats that are designed
to be easy encode and decode. This is in contrast to more popular formats like
PNG and TTF which would likely call for external libraries.

Despite all of the above, Ombre is not meant as a "toy" library. Performance,
stability, flexibility and developer friendliness are not compromised. Though
certain defaults are chosen, such as the graphics backend, the user is able
to easily swap out backends for something more appropriate to their target
platform.

Features
--------
* Context creation and input handling using `glfw`[^1]
* Graphics API inspired by `sokol-gfx`[^2]
* Cross-platform using an OpenGL 3.3 backend with `glow`[^3]
* Bitmap font rendering support for UF1 and UF2 fonts[^4]
* Image encoding and decoding using the simple RGBA (`.rgba`) file format
* Computer graphics `math` module with 2D and 3D vectors and transforms
* Color types and functions

Rationale
---------
* Since all major platforms support OpenGL 3.3, and will do for the foreseable
future, there is no reason to target anything else. The `glow` crate is used
for its simplicity, portability, and bare-bones type safety.
* For context creation and input handling, GLFW is chosen for its maturity and
stability, while staying minimal and offering the most flexibility without
taking away control from the user.
* Popular font and image formats such as TTF and PNG are explicitly not
supported due to their complexity and low value-add.
* 3D math is implemented in-house, to avoid depending on yet another
abandonned math library, and to offer the best experience.
* Trying to support all platforms including web and mobile with a single
API is bound to leak platform details. We avoid that by focusing on OpenGL
and desktop graphics.

Acknowledgments
---------------
Big chunks of this library were adapted from `miniquad` by Fedor Logachev,
which itself is adapted from `sokol`, by Andre Weissflog. Additionally, much
of the 3D math code was borrowed from `cgmath`, and `euclid` by the Servo
Project Developers. Finally it's worth mentioning that `druid`, by Raph
Levien has served as inspiration for the UI code, and some of the math code.

License
-------
Dual-licensed under MIT and Apache.

[^0]: https://dreamsongs.com/WorseIsBetter.html
[^1]: https://www.glfw.org/
[^2]: https://floooh.github.io/2017/07/29/sokol-gfx-tour.html
[^3]: https://crates.io/crates/glow
[^4]: https://wiki.xxiivv.com/site/ufx_format.html