Skip to content

karnkaul/LittleEngine3D

Repository files navigation

LittleEngine 3D

A lightweight, simple, and performant 3D game engine library, being developed in OpenGL 3.3 (contexts < 3.3 are not officially supported, but can be requested and worked with).

Build Status Licence Twitter

Note: When viewing this repository's source on GitHub's web interface, add ?ts=4 to the URL to have it use the correct tab spacing (4).

How to Build

Note: le3d-demo requires OpenGL 3.3

Supported environments:

  • x86/x64 Windows (MSVC / clang); CRT required
  • x86/x64 Linux (g++ / clang)

Quickstart:

  • VS2019/Ninja:
    1. Open root directory in Visual Studio 2019
    2. Select Build > Build All
    3. Run le3d-demo (or custom executable target)
  • Others (CMake GUI):
    1. Run CMake
    2. Select root directory as source
    3. Select an output directory (out/... is ignored)
    4. Click Configure and pick your build environment; ensure no errors are thrown
    5. Click Generate
    6. Open project and build
    7. Run le3d-demo (or custom executable target)
  • Shell:
    1. cmake -G <generator> . -B out/<build_dir> -DCMAKE_BUILD_TYPE=<build_config>
    2. cmake --build out/<build_dir>

Rendering

LittleEngine3D uses an OpenGL 3.3 Core context by default, with GL_ARB_texture_filter_anisotropic loaded, and uses forward rendering with a fixed number of point and directional lights. Each Mesh contains one Material which supports diffuse and specular textures and various built-in uniforms as defined in env::g_config (entire struct can be overridden).

MVP Target

  • Perspective and orthographic projections
  • 2D view and quad drawing
  • Model loading
  • Text rendering
  • Debug primitives (cube, sphere, cone, etc)
  • Threaded Renderer
  • Async manifest loader
  • Particle systems (using instancing)
  • Shadows (directional lights)
  • ImgUI integration
  • Trivial collision system

Submodules / External:

Public (use via #include <libName/.../header>):

Private: