blue_engine 0.9.1

General-Purpose, Easy-to-use, Fast, and Portable graphics engine
Documentation
 <img src="https://raw.githubusercontent.com/AryanpurTech/BlueEngineDocs/master/resources/logo_3d.gif" loop=infinite width="100%" />

# Blue Engine

Blue Engine is an easy to use, portable, and extendable/customizable graphics engine. Here
lives the documentation for the engine.

## Setup

The setup and installation details live in the project's [guide](https://aryanpurtech.github.io/BlueEngineDocs/).
A basic program in Blue Engine is as follow:

## Example

```rust
use blue_engine::{
    prelude::{ Engine, ObjectSettings },
    primitive_shapes::triangle
};

fn main() {
    // initialize the engine
    let mut engine = Engine::new();

    // create a triangle
    triangle("my triangle", ObjectSettings::default(), &mut engine.renderer, &mut engine.objects);

   // run the engine
   engine
       .update_loop(move |_, _, _, _, _, _| {});
}
```

## Utilities

This crate is the core of the engine, but there is also [utilities crate](https://github.com/AryanpurTech/BlueEngineUtilities)
which have a lot of utilities for the engine such as lighting, physics, etc.

## Guide for code navigation

The code of the engine is organized in a rather different manner than traditional in the
language. There are inspirations from other languages to make it easier to navigate the
project.

## Older hardware

The engine uses WGPU under the hood for rendering. WGPU by nature is designed for modern hardware, so if you have or want to
target older hardware, you might need to add a couple more things to EngineSettings during Engine::new_config:

1. set a backend that targets your older hardware, such as GL using the backends field: `backend: blue_engine::wgpu::Backends::GL`
2. experiement with the limits field, which describes what features you need. `limits: blue_engine::wgpu::Limits::default()`. there
   are three options for limits: `default` for normal hardware, `downlevel_defaults` which are compatible with GLES-3 and D3D-11, or
   `downlevel_webgl2_defaults` which is also compatible with WebGL2, and the lowest level for limits and can support very old hardware.

with these two changes, hopefully you can get Blue Engine to run on older hardware. If not, please let me know so I can help you further.