-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from BarthPaleologue/HPBD
HXPbd Physics Engine
- Loading branch information
Showing
80 changed files
with
701,281 additions
and
561 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,7 +5,6 @@ | |
*.slo | ||
*.lo | ||
*.o | ||
*.obj | ||
|
||
# Precompiled Headers | ||
*.gch | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,60 @@ | ||
# Feather | ||
|
||
Feather is a small opengl engine written in c++ inspired by BabylonJS aiming at easily create complex playgrounds for simulations. | ||
Feather is a small OpenGL engine written in C++ developed for fun and learning purposes. The API is loosely inspired by BabylonJS. | ||
|
||
It features a demo of a small simple solar system made using the engine. | ||
![HXPBD](img.png) | ||
|
||
![Many Point Lights](./coverImages/cover0.png) | ||
## Features | ||
|
||
<img src="./coverImages/cover3.png"> | ||
### General | ||
|
||
<img src="./coverImages/cover4.png"> | ||
- 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 | ||
|
||
### 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: | ||
|
||
```bash | ||
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: | ||
|
||
```bash | ||
mkdir build | ||
cd build | ||
cmake .. | ||
make | ||
``` | ||
|
||
|
||
![Many Point Lights](./coverImages/cover0.png) |
Oops, something went wrong.