Skip to content

hotstreams/limitless-engine

Repository files navigation

me

Limitless Engine is a 3D graphics engine, focused on high-performance, low-overhead rendering with modern OpenGL & C++17.

Linux Build Status Windows Build Status

Core Features

  • OpenGL state caching for reducing driver overhead
  • Multithreaded OpenGL context resource sharing
  • Shader Compiler & Shader Program introspection
  • Indexed buffers automatic binding
  • Textures automatic binding
  • Texture Compression support
  • Time queries
  • Buffer data streaming: Orphaning, Unsynchonized, Persistent, Coherent, TrippleBuffering, Explicit synchronization
  • Extension support:
    • GL_ARB_buffer_storage
    • GL_ARB_direct_state_access
    • GL_ARB_shader_storage_buffer_object
    • GL_ARB_shading_language_420pack
    • GL_ARB_explicit_uniform_location
    • GL_ARB_tessellation_shader
    • GL_ARB_program_interface_query
    • GL_ARB_texture_storage
    • GL_ARB_bindless_texture
    • GL_EXT_texture_filter_anisotropic
    • GL_EXT_texture_compression_s3tc
    • GL_ARB_texture_compression_bptc
    • GL_ARB_texture_compression_rgtc

lighting.mp4
lighting1.mp4

Rendering

  • Forward & Deferred rendering
  • Cook-Torrance microfacet specular BRDF
  • Lambertian diffuse BRDF
  • Roughness-Metallic workflow
  • Translucent materials
  • Normal mapping
  • Ambient occlusion mapping
  • Dynamic directional light, point lights and spot lights
  • Directional Cascade Shadow maps
  • Percentage-Closer Filtering
  • Skybox
  • Screen space ambient occlusion
  • Screen space reflections
  • Screen space refraction
  • Tone mapping
  • Gamma correction
  • HDR Bloom
  • FXAA
  • Deferred Decals
  • Instancing

Material System

  • Lit, unlit shading models
  • Base color (scalar, texture)
  • Metallic (scalar, texture)
  • Roughness (scalar, texture)
  • Refraction
  • Normal
  • Emissive color
  • Emissive mask
  • Blend mask
  • Ambient occlusion
  • Transparency: Translucent, Additive, Modulate
  • Material layering
  • Custom materials via GLSL snippets that allow you to create whatever material you want
  • All properties are run-time changeable

Effect System

  • Sprite, Mesh, Beam emitters
  • Initial, By life modules types
  • Const, Range value distributions
  • Interoperation with material custom properties
  • Modules:
    • Color
    • Location
    • Velocity
    • Acceleration
    • Size
    • Lifetime
    • Mesh location
    • Mesh attachment
    • Rotation
    • Rotation rate
    • Custom material
    • Beam targets, speed, offset, rebuild, displacement

Examples

Build

This project requires C++17 compiler and CMake.

  1. After cloning this Git repo, initialize its Git submodules, which contain 3rd party dependencies and build glew extensions:
git submodule init
git submodule update
cd thirdparty/glew
make extensions
  1. Create a new directory for resulting build and start it:
mkdir build && cd build
cmake ..
make -j12 limitless-materials limitless-effects limitless-lighting

Dependencies

  • glfw3
  • glew
  • OpenGL
  • glm
  • stb_image
  • stb_image_resize
  • freetype