OpenGL C++ Graphics Engine
3d-graphics
bloom
decals
deferred-rendering
effects
gamedev
gltf
gltf-loader
graphics-engine
lighting
material
models
modern-opengl
normal-mapping
opengl
pbr
shadows
skeletal-animation
ssao
ssr
- C++ 82.2%
- GLSL 9%
- C 8.3%
- CMake 0.5%
|
Eddis S.
c8b979dc35
Update ubuntu-build.yml |
||
|---|---|---|
| .github/workflows | Update ubuntu-build.yml | |
| assets | terrain | |
| docs | fix preview | |
| include/limitless | allow blur to be disabled | |
| samples | terrain update | |
| shaders | tentative effect instance fix | |
| src/limitless | fix .glb loading | |
| tests | restore fxaa | |
| thirdparty | removed assimp | |
| .gitignore | add test files | |
| .gitmodules | removed assimp | |
| CMakeLists.txt | terrain update | |
| LICENSE | Create LICENSE | |
| README.md | Update README.md | |
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
https://github.com/hotstreams/limitless-engine/assets/37740577/89b6e76b-e033-4644-829c-9abc744a2341
https://github.com/hotstreams/limitless-engine/assets/37740577/e8ac6aed-a6f1-4125-b2bc-b67584bbaf93
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.
- 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
- 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