- Requires
libsdl2-dev
on Ubuntu. - Make sure to recurse submodules to pull in FastNoise2, tracy, and hoard-of-bitfonts code -
git submodule update --init --recursive
, alternatively just run scripts/init.sh to do the same thing. - Run scripts/build.sh in order to build on Ubuntu. It just automates the building of the executable and moves it to the root directory, as files are referenced relative to that location, and then deletes the build folder (if called with the "clean" option).
Graphics Stuff
- SDL2 is used for windowing and input handling
- GLEW as an OpenGL function loader
- OpenGL Debug callback for error/warning reporting
- Dear ImGui Docking Branch 1.83.2 + ImGuiColorTextEdit
- Setup to spawn platform windows
- Fast text renderer overlay applied as a post process, currently used for reporting of main loop timing but I eventually want to extend it to a drop down in engine terminal a la guake, renderer is loosely based on / inspired by this implementation.
- WIP software rasterizer, SoftRast
Noise
- Diamond-Square algorithm heightmap generation
- FastNoise2 - flexible, powerful, very fast noise generation
- 4 channel blue noise texture from Christoph Peters
Utilities
- CMake parallel build setup
- OpenGL texture bindings management with bindsets
- GLM for vector and matrix types
- Image wrapper for loading/saving/resizing/etc of images ( 4 channel, 8-bit default - STB and LodePNG I/O backends )
- JSON parsing using nlohmann's single header implementation
- XML parsing using TinyXML2
- TinyOBJLoader for loading of Wavefront .OBJ 3D model files
- Brent Werness' Voxel Automata Terrain ( VAT ), converted from processing to C++
- BigInt library required by the VAT implementation ( to replace java/processing BigInt )
- Startup config in json format, setting application parameters at startup without recompiling
- Tick() / Tock() timing wrapper around std::chrono
- Orientation Trident from Voraldo13, with the addition of multisampled AA in this implementation
- Tracy profiler integration ( client mode )
Data Resources
- Bayer pattern header, size 2, 4, 8 patterns
- Header with some color utilities
- PNG encoded data resources with loader/decoder
- bitfontCore2 ( ~140k glyphs from robhagemans ) + loader
- Collection of palettes from lospec + loader