GithubHelp home page GithubHelp logo

barthpaleologue / feather Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 0.0 27.51 MB

Lightweight 3D C++ OpenGL engine, with physics powered by XPBD

CMake 0.01% C++ 89.03% GLSL 0.17% C 10.78% Makefile 0.01%
3d opengl pbd rendering xpbd hpbd

feather's Introduction

Feather

Feather is a small OpenGL engine written in C++ developed for fun and learning purposes. The API is loosely inspired by BabylonJS.

HXPBD

Features

General

  • Blinn-Phong shading
  • PBR shading
  • Normal mapping
  • Shadow Mapping
  • CPU mouse picking
  • Post-processing effects
  • Compute shaders
  • Raw .obj file loading
  • Up to 128 point lights by default
  • ImGui integration

Physics

The entire code for the physics engine is available in the core/physics directory. It is based on the Position-Based Dynamics (PBD) method, and includes the following features:

  • XPBD soft body simulation
  • HPBD multigrid solver for XPBD
  • Distance constraints
  • Fast and Dihedral bending constraints
  • Tetrahedral volume constraints
  • Global volume constraints
  • Collision constraints with friction
  • Collision LoD using HPBD
  • Constraints and bounding boxes helpers

A detailed report is available in the root directory of the project.

Main controls

  • Mouse drag: Rotate the camera
  • Ctrl + Mouse drag: Pan the camera
  • Mouse wheel: Zoom in/out
  • Shift + Mouse drag: lock rotation to pick an object

How to build

Dependencies

Feather uses GLFW3 for window management and input, as well as GLM for math operations.

They can be installed on any Debian-based system using the following command:

sudo apt install libglfw3-dev libglm-dev

CMake

Feather uses CMake as its build system. To build the project, you can use the following commands:

mkdir build
cd build
cmake ..
make

Many Point Lights

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.