bioglaze / Aether3d
Licence: zlib
Aether3D Game Engine
Stars: ✭ 177
Projects that are alternatives of or similar to Aether3d
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+5692.09%)
Mutual labels: engine, vulkan, metal
Veldrid
A low-level, portable graphics library for .NET.
Stars: ✭ 1,784 (+907.91%)
Mutual labels: vulkan, metal, direct3d
Substrate
A cross-platform render-graph based rendering system written in Swift
Stars: ✭ 94 (-46.89%)
Mutual labels: engine, vulkan, metal
Renderdoc
RenderDoc is a stand-alone graphics debugging tool.
Stars: ✭ 5,969 (+3272.32%)
Mutual labels: vulkan, graphics-programming, direct3d
mojoshader
Use Direct3D shaders with other 3D rendering APIs.
Stars: ✭ 91 (-48.59%)
Mutual labels: metal, vulkan, direct3d
Explosion
💥 A modern cross-platform game engine (WIP)
Stars: ✭ 102 (-42.37%)
Mutual labels: metal, engine, vulkan
Fna3d
FNA3D - 3D Graphics Library for FNA
Stars: ✭ 111 (-37.29%)
Mutual labels: vulkan, metal, direct3d
wgpu-mc
Rust-based replacement for the default Minecraft renderer
Stars: ✭ 254 (+43.5%)
Mutual labels: metal, engine, vulkan
Yggdrasil-Legacy
Experimental Vulkan Renderer / Game Engine written in C++20.
Stars: ✭ 20 (-88.7%)
Mutual labels: engine, vulkan, graphics-programming
Vk9
Direct3D 9 compatibility layer using Vulkan.
Stars: ✭ 799 (+351.41%)
Mutual labels: vulkan, graphics-programming, direct3d
Vulkan Samples
One stop solution for all Vulkan samples
Stars: ✭ 2,009 (+1035.03%)
Mutual labels: vulkan, graphics-programming
Xrtl
Cross-platform Real-Time Rendering Library
Stars: ✭ 108 (-38.98%)
Mutual labels: vulkan, graphics-programming
Crossshader
⚔️ A tool for cross compiling shaders. Convert between GLSL, HLSL, Metal Shader Language, or older versions of GLSL.
Stars: ✭ 113 (-36.16%)
Mutual labels: vulkan, metal
Herebedragons
A basic 3D scene implemented with various engines, frameworks or APIs.
Stars: ✭ 1,616 (+812.99%)
Mutual labels: metal, graphics-programming
Vulkantutorial
Tutorial for the Vulkan graphics and compute API
Stars: ✭ 1,962 (+1008.47%)
Mutual labels: vulkan, graphics-programming
Filament
Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2
Stars: ✭ 13,215 (+7366.1%)
Mutual labels: vulkan, metal
Flycube
Graphics API wrapper is written in C++ on top of Directx 12 and Vulkan. Provides main features including ray tracing.
Stars: ✭ 78 (-55.93%)
Mutual labels: vulkan, graphics-programming
Kaleido3d
Next Generation Renderer for Cross Platform Engine Development
Stars: ✭ 145 (-18.08%)
Mutual labels: vulkan, metal
Diligentsamples
Sample projects demonstrating the usage of Diligent Engine
Stars: ✭ 138 (-22.03%)
Mutual labels: vulkan, graphics-programming
Aether3D Game Engine
Author: Timo Wirén
Features
- Windows, macOS, iOS and Linux support.
- Vulkan, D3D12 and Metal renderers.
- Physically-based rendering.
- Forward+ light culling.
- Component-based game object system.
- VR support in Vulkan backend. Tested on HTC Vive.
- Sprite rendering, texture atlasing and batching.
- Bitmap and Signed Distance Field font rendering using BMFont fonts.
- Skinned animation for meshes imported from FBX.
- Variance shadow mapping.
- SSAO
- Bloom
- Audio support for .wav and .ogg.
- Hot-reloading of assets.
- Custom model format with .obj, .fbx and Blender exporter.
- Virtual file system for .pak files.
- Xbox controller support.
- Cross-Platform WYSIWYG scene editor.
- Statically linked into your application.
- Wireframe rendering mode.
- Line rendering.
Planned Features
- Particles
- Tone mapping
- DoF
- Most of the features in my previous engine
Sample Code
Window::Create( width, height, WindowCreateFlags::Fullscreen );
RenderTexture cameraTex;
cameraTex.Create2D( width, height, DataType::Float, TextureWrap::Clamp, TextureFilter::Linear, "cameraTex", false );
GameObject camera;
camera.AddComponent<CameraComponent>();
camera.GetComponent<CameraComponent>()->SetClearColor( Vec3( 0, 0, 0 ) );
camera.GetComponent<CameraComponent>()->SetProjectionType( CameraComponent::ProjectionType::Perspective );
camera.GetComponent<CameraComponent>()->SetProjection( 45, (float)width / (float)height, 0.1f, 200 );
Mesh sphereMesh;
sphereMesh.Load( FileSystem::FileContents( "sphere.ae3d" ) );
GameObject sphere;
sphere.AddComponent< MeshRendererComponent >();
sphere.GetComponent< MeshRendererComponent >()->SetMesh( &sphereMesh );
sphere.AddComponent< TransformComponent >();
sphere.GetComponent< TransformComponent >()->SetLocalPosition( { 0, 4, -80 } );
Scene scene;
scene.Add( &camera );
scene.Add( &sphere );
API documentation
Build
- After building build artifacts can be found in aether3d_build next to aether3d.
- Grab the sample asset archive and extract it into aether3d_build/Samples after building.
Windows
- Open the project in Engine\VisualStudio_* in Visual Studio and build it. For MinGW you can use Engine\Makefile_Vulkan.
- Build and run Samples\01_OpenWindow. On MinGW the command is
make
- Vulkan users: built-in shader sources are located in aether3d_build\Samples that comes with sample asset archive. If you modify them, you can build and deploy them by running compile_deploy_vulkan_shaders.cmd in Engine/Assets.
- FBX converter tries to find FBX SDK 2020.1.1 in its default install location (English language localization)
OpenVR
- Copy OpenVR headers into Engine\ThirdParty\headers
- Copy OpenVR DLL into aether3d_build\Samples
- Open Vulkan renderer's Visual Studio solution and select target OpenVR Release
- Build and run Samples\04_Misc3D target Release Vulkan OpenVR in Visual Studio.
macOS
- Open the project Engine/Aether3D_OSX_Metal in Xcode and build it.
- Open the project Samples/MetalSampleOSX and run it.
- FBX converter tries to find FBX SDK 2020.1.1 in its default install location.
Linux
- Install dependencies:
sudo apt install libopenal-dev libx11-xcb-dev libxcb1-dev libxcb-ewmh-dev libxcb-icccm4-dev libxcb-keysyms1-dev
- Run
make -f Makefile_Vulkan
in Engine.
iOS
- Build Aether3D_iOS in Engine. It creates a framework.
- Copy the framework into your desktop.
- Open Samples/MetalSampleiOS and build and run it.
Tested GPUs
- AMD Radeon R9 Nano on Ubuntu 20.04 and Windows 10
- NVIDIA GTX 750M on MacBook Pro 2013 and macOS Catalina
- NVIDIA GTX 1080 on Windows 10
- NVIDIA RTX 2060 on Windows 10
- Intel Skylake HD530 on Ubuntu 18.04
Running Tests
Visual Studio
- Unit test project can be found in Engine\Tests\UnitTests. You'll need to set it to run in x64 and copy OpenAL32.dll into the build folder.
GCC or Clang
- You can find Makefiles in Engine/Tests.
License
The engine is licensed under zlib license.
Third party library licenses are:
- stb_image.c is in public domain
- stb_vorbis.c is in public domain
- OpenAL-soft is under LGPLv2 license
- Nuklear UI is in public domain
Roadmap/internal TODO
https://docs.google.com/document/d/1jKuEkIUHiFtF4Ys2-duCNKfV0SrxGgCSN_A2GhWeLDw/edit?usp=sharing
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].