Skip to content

hotstreams/limitless-engine

Folders and files

NameName
Last commit message
Last commit date
Aug 28, 2024
Feb 10, 2024
Dec 16, 2023
Aug 28, 2024
Aug 27, 2024
Aug 27, 2024
Aug 28, 2024
Jun 7, 2024
Dec 5, 2023
Jun 17, 2023
Dec 5, 2023
Aug 27, 2024
Jul 26, 2021
Feb 10, 2024

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