Rendering

For rendering, we'll use wgpu, which is a safe and portable GPU abstraction in rust that implements the WebGPU API. Without this library, we would have write our own GPU abstraction and create separate backends for that abstraction. Supporting as many different platforms as possible for the sake of this engine provides flexibility. We could render on Android with Vulkan, Windows with DirectX, IOS and MacOS with Metal, or maybe even the web using webgl (and eventually webgpu!).