# Engine Docs ## Features To be filled. * a Unity-like ECS + scene + asset system * entities stores components and behaviors * scenes load a tree of entities * entities are defined through JSON files which can reference assets or other JSON files, and can instantiate other entities * Lua to extend the engine * Garry's Mod-like hook system for dispatching events * events are dispatched through the hook system by sending objects hooks tied to a given name + payload type * Vulkan (or OpenGL) as the rendering backend * the Vulkan backend heavily makes use of an almost-GPU driven deferred rendering system * "G-buffer" can consist solely of IDs and depth, and all geometry information is then reconstructed during the deferred compute pass * optionally can fall back to a quasi-traditional setup of IDs, UVs, normals, and depth * shadow maps are rendered to each light's shadow maps * point lights are treated as a cubemap * optional light map baking * basic PBR shading * a sovlful (sloppy) VXGI for GI and reflections * hardware RT support via `VK_KHR_ray_query` * "full" `VK_KHR_ray_tracing` mode is partially broken * bloom and additional post processing * FSR2 or something cringe * OpenGL uses a very, very naive OpenGL 1.2 API with a homebrewed command recording system * pre-baked light maps can be loaded for lighting * ReactPhysics3D for physics * *very* loosely integrated * basic shapes and triangulated mesh collision and some form of ray queries * OpenAL for audio * Loads from `.ogg` or `.wav` files * Supports loading in full and streaming * *very* loosely integrated * Speech synthesis using [vall_e.cpp](https://github.com/e-c-k-e-r/vall-e/) * `win64.gcc.vulkan` binaries can be found [here](https://github.com/e-c-k-e-r/vall-e/releases/tag/vall_e.cpp), if compiled with `-DUF_USE_VALL_E` * asynchronously synthesizes speech and plays back the PCM audio ## Supported Systems * Windows * *technically* also Linux under Proton * Sega Dreamcast ## Notices and Citations Unless otherwise credited/noted in this repo or within the designated file/folder, this repository is [licensed](/LICENSE) under AGPLv3 (I do not have a master record of dependencies).