Aether3D Game Engine
Aether3D Game Engine v0.8.7 Documentation

Introduction

Aether3D is an open source game engine focusing on simplicity, robustness, portability and forward-thinking.

Features

  • Windows, macOS, iOS and GNU/Linux.
  • Vulkan, Metal and D3D12 renderers.
  • Sprite batching.
  • Audio support: .wav and .ogg.
  • Bitmap fonts using BMFont. Also supports SDF rendering.
  • Virtual file system aka .pak archive files for faster loading.
  • Custom mesh format, converters included for .obj, .fbx and Blender.
  • Shadow mapping from a directional or spot light
  • VR support. Tested on HTC Vive.
  • Particle System.
  • SSAO
  • Bloom
  • SIMD optimized math routines on desktop and iOS.
  • Skinned animation.
  • Scene serialization.
  • Scene editor built using WYSIWYG rendering.
  • Xbox controller support.
  • Wireframe rendering.
  • Line rendering.

Requirements

Only 64-bit project files/libraries are provided.

Compilation

Grab the sample asset archive and extract it into aether3d_build/Samples after building.

Windows/Visual Studio

You'll need Visual Studio 2019 or newer. 2017 also works if you change platform toolset and Windows SDK version. Build Engine/VisualStudio_D3D12 or Engine/VisualStudio_Vulkan. This creates the library in aether3d_build. You can then build and run Samples/01_OpenWindow. The created executable will be placed in aether3d_build/Samples. You'll need OpenAL32.dll from OpenAL Soft either in your system directory or in the directory used to run samples/editor.

Windows/MinGW

Run mingw32-make in Engine/. Then run mingw32-make -f Makefile_Vulkan in Samples/01_OpenWindow. The created executable will be placed in aether3d_build/Samples.

macOS/Xcode

Metal: Build Engine/Aether3D_OSX_Metal. Make sure the built library is in aether3d_build. Then build and run Samples/MetalSampleOSX, making sure the running folder is set to aether3d_build/Samples.

macOS and GNU/Linux Command Line

Run Makefile_Vulkan (on Linux) in Engine. Then run the Makefile in Samples/01_OpenWindow. The created executable will be placed in aether3d_build/Samples. On GNU/Linux you need at least the following packages:

libopenal-dev libx11-xcb-dev libxcb1-dev libxcb-ewmh-dev libxcb-icccm4-dev libxcb-keysyms1-dev

Tools

Editor

Editor is used to create scenes by placing and moving GameObjects, adding components etc.

CombineFiles

Aether3D internals almost never read raw files, all file access is abstracted by FileSystem to allow file contents to come from various sources. CombineFiles creates .pak files that contain contents of multiple files. You run it with command CombineFiles inputFile outputFile where inputFile is just a text file containing a list of file paths, each on their own line.

SDF_Generator

Generates a signed-distance field from a texture, useful for high-quality font rendering.

OBJ_Converter

Converts .obj files to Aether3D's .ae3d format. When you export .objs from a modelling software, be sure to triangulate faces and also export texture coordinates. Materials and their bindings to submeshes can be read using read_mtl. Their output can be used in .scene files.

Performance

For archival/informative purposes, here's some performance info:

Sponza scene with directional light shadows is 16.6 ms on GeForce 780 GTX on Ubuntu. City scene with 2000 point lights, 3000 draw calls, 0.6 M triangles is 16.6 ms on GeForce 780 GTX on Vulkan.