Skip to content
/ barbu Public

🐗 A c++17 graphics framework aimed at rendering beards & humanoïds.

License

Notifications You must be signed in to change notification settings

tcoppex/barbu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Barbü

License: MIT

screenshot

Barbü is a prototyping framework for real-time 3D graphics aimed at simulating hairy creatures.

It is written in C++ 17 and OpenGL 4.6 (Core Profile).

Check the gallery here, or take a sneak peek.

Some Features

  • Entity-Components based system with live scene edit.
  • Hot-reload of external assets (textures, models, shaders).
  • PBR pipeline with Image Based Lighting.
  • Postprocessing with tonemapping and horizontal based SSAO.
  • Marschner's hair reflectance model GPU implementation.
  • Dynamic GPU particles & hair simulation.
  • GPU skinning animation via Dual Quaternion blending.
  • GLTF 2.0 & OBJ drag-n-drop model import.
  • Features rich camera controls.
  • Colourful console logger with context tracking !

Quickstart

We will use the command-line on Unix and Git Bash on Windows.

Cloning the repo.

First be sure to have Git LFS installed on your system to retrieve the assets, then clone the repo with its submodules :

git clone --recurse-submodules https://github.com/tcoppex/barbu.git

The following third parties are used :

Some are shipped directly while others are retrieved as submodules. If you need to retrieved them separately, use this command in the project directory :

git submodule update --init --recursive

Build

We will first create a build directory then generate the CMake cache depending on your system.

cd barbu
mkdir BUILD && cd BUILD

On Unix, using Makefile :

cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . -- -j `nproc`

On Windows, using MSVC 15 for x64:

cmake .. -G "Visual Studio 15 2017 Win64"
cmake --build . --target ALL_BUILD --config Release

Notes : Using CMake, the build configuration type (ie. Debug, Release) is set at Build Time with MSVC and at Cache Generation Time with Makefile.

CMake Options

  1. When using a HDPI screen, you can specify the UI scaling with HDPI_SCALING (eg. -DHDPI_SCALING=1.5).
  2. OpenGL extensions are generated automatically by a custom Python script. Alternatively GLEW can be used by specifying the option -DOPT_USE_GLEW=ON to CMake. If something does not compile due to OpenGL functions, try to use GLEW instead.
  3. By default some third parties are compiled as shared libraries. You can switch them to static by using the option -DOPT_BUILD_SHARED_LIBS=OFF.

Run

The binary can be found in the project ./bin/ directory:

../bin/barbu

Known issues

This project will not run on integrated GPUs with a "Compatibility Profile"-only driver.

References

License

Barbü is released under the MIT license.

About

🐗 A c++17 graphics framework aimed at rendering beards & humanoïds.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published