All Projects → ThePhysicsGuys → Physics3d

ThePhysicsGuys / Physics3d

Licence: mit
A 3D physics engine

Programming Languages

1120 projects

Projects that are alternatives of or similar to Physics3d

General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (+79.21%)
Mutual labels:  engine, opengl, graphics, rendering, glfw
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+10050.5%)
Mutual labels:  engine, opengl, graphics, rendering, glfw
486 lines of C++: old-school FPS in a weekend
Stars: ✭ 1,383 (+1269.31%)
Mutual labels:  engine, opengl, graphics, rendering
⚡️ 可编程渲染管线实现,帮助初学者学习渲染
Stars: ✭ 494 (+389.11%)
Mutual labels:  engine, opengl, graphics, rendering
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+11559.41%)
Mutual labels:  engine, opengl, graphics, rendering
Rust Game Development Frameworks
List of curated frameworks by the **Game Development in Rust** community.
Stars: ✭ 81 (-19.8%)
Mutual labels:  opengl, graphics, physics
The high-speed OpenAL, OpenGL, Vulkan, and GLFW bindings library your mother warned you about.
Stars: ✭ 534 (+428.71%)
Mutual labels:  opengl, graphics, glfw
Ign Gazebo
Open source robotics simulator. Through Ignition Gazebo users have access to high fidelity physics, rendering, and sensor models. Additionally, users and developers have multiple points of entry to simulation including a graphical user interface, plugins, and asynchronous message passing and services. Ignition Gazebo is derived from Gazebo, and represents over 16 years of development and experience in robotics and simulation. This library is part of the Ignition Robotics project.
Stars: ✭ 81 (-19.8%)
Mutual labels:  rendering, simulation, physics
Gpu Gems Book Source Code
💿 CD Content ( Source Code ) Collection of Book <GPU Gems > 1~ 3 | 《GPU精粹》 1~ 3 随书CD(源代码)珍藏
Stars: ✭ 567 (+461.39%)
Mutual labels:  graphics, rendering, shader
Software-only 3D renderer written in Go.
Stars: ✭ 658 (+551.49%)
Mutual labels:  opengl, graphics, rendering
Graphic Engine & Game Engine lists
Stars: ✭ 772 (+664.36%)
Mutual labels:  graphics, rendering, shader
Game Dogfight
Air to air combat game, created in Python 3 using HARFANG 3D.
Stars: ✭ 41 (-59.41%)
Mutual labels:  opengl, simulation, physics
Real-time multi-physics simulation with an emphasis on medical simulation.
Stars: ✭ 435 (+330.69%)
Mutual labels:  engine, simulation, physics
Lighthouse 2 framework for real-time ray tracing
Stars: ✭ 542 (+436.63%)
Mutual labels:  opengl, rendering, glfw
C++ Metal wrapper
Stars: ✭ 425 (+320.79%)
Mutual labels:  engine, graphics, rendering
Open source robotics simulator.
Stars: ✭ 404 (+300%)
Mutual labels:  rendering, simulation, physics
Python+Numpy+OpenGL: fast, scalable and beautiful scientific visualization
Stars: ✭ 882 (+773.27%)
Mutual labels:  engine, opengl, rendering
Interactive GLSL fragment shaders editor made with Qt
Stars: ✭ 43 (-57.43%)
Mutual labels:  opengl, graphics, rendering
ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages
Stars: ✭ 1,146 (+1034.65%)
Mutual labels:  opengl, graphics, shader
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+3591.09%)
Mutual labels:  opengl, graphics, glfw


Ubuntu CI Badge MSVC CI Badge

A 3D physics engine, written in C++

Many Shapes Different Shapes Editor

Project structure

The Physics3D project consists of 7 projects, each with its own role:

  • The physics project contains the physics engine can be compiled separately.
  • The graphics project contains all the logic to interact with OpenGL, visual debugging and gui code.
  • The engine project contains general concepts that can be applied in multiple environments like a layer systems and an event system.
  • The util project contains code that can be used in all project, like logging, utilities and resource management.
  • The application project contains an executable example application for visualizing, debugging and testing the physics engine. This project depends on the engine, graphics and physics project. Every project, including the physics project depends on util.
  • The tests project contains an executable with unit test for the physics engine.
  • The benchmarks project contains an executable with benchmarks to evaluate the physics engine's performance.


Application & engine & graphics

  • GLFW Verified working with GLFW 3.2.1
  • GLEW Verified with GLEW 2.1.0
  • stb_image Verified with stb_image.h v2.22
  • FreeType Verified with FreeType v2.9.0
  • Dear ImGui Verified with ImGui v1.77. Make sure to grab the files from the experimental docking branch.
  • some OpenGL functionality may not be available on virtual machines, enabling 3D acceleration might solve this

Setup Guide


If you suddenly can't build the project anymore after pulling, perhaps one of the dependencies has changed. Try running install/ (Unix) or install/clean.bat (Windows) and rerun the setup script in the steps below.

If you still have build problems, please create an issue as we want setting up to be as easy as possible.

Platform independent using vcpkg

  1. Clone the repository
  2. If you do not have cmake already: download it from
  3. Run install/ (Unix) or install/setup.bat (Windows) from the Physics3D directory, this will install the necessary dependencies using vcpkg and create the build folders. It will also run cmake for debug and release. The dependencies can be installed on their own with install/ (Unix) or install/setupDependencies.bat (Windows) The build directories can be generated on their own with install/ (Unix) or install/setupBuild.bat (Windows)
  4. Make the build with cmake --build build
  5. To run the application, you must also run it from the build directory: cd build ./application. Tests and benchmarks can be run from anywhere.

Ubuntu specific using apt-get

If you are using Ubuntu, we recommend using this installation method instead, as setting up using vcpkg can take a very long time. This method should get you a working version of the engine starting from a clean Ubuntu 18.04.

  1. Clone the repository
  2. Run install/ from the Physics3D directory, this will install the necessary dependencies and create the build folders. It will also run cmake for debug and release. The dependencies can be installed on their own with install/ The build directories can be generated on their own with install/
  3. Make the build with cmake --build build
  4. To run the application, you must also run it from the build directory: ./application. Tests and benchmarks can be run from anywhere.

Visual Studio

  1. Clone the repository
  2. The physics project on its own does not depend on any libraries, so if you wish to only build it then you may skip step 3.
  3. Download the dependencies, the Visual Studio configuration expects the libraries to be stored in Physics3D/lib/, includes should be stored in Physics3D/include/, with Physics3D/ the root folder of the git project. Your project structure should look like this:
    | - include/
    | | - freetype/
    | | | - (freetype headers)
    | | - GL
    | | | - (glew headers)
    | | - GLFW/
    | | | - (glfw3 headers)
    | | - imgui/
    | | | - imconfig.h
    | | | - imgui.h & .cpp
    | | | - imgui_draw.h
    | | | - imgui_internal.h
    | | | - imgui_widgets.cpp
    | | | - imgui_rectpack.h
    | | | - imgui_textedit.h
    | | | - imgui_truetype.h
    | | | - imgui_impl_glfw.h & .cpp
    | | | - imgui_impl_opengl3.h & .cpp
    | | - stb_image.h
    | | - ft2build.h
    | - lib/
    | | - freetype.lib
    | | - glew32.lib
    | | - glew32s.lib
    | | - glfw3.dll
    | | - glfw3.lib
    | | - glfw3dll.lib
    | - (Project and other files)
  4. The configuration should already be configured in the provided project and solution files
  5. You are done!


This list is inconclusive as new contributors are always welcome!


This project is licensed under the MIT License - see the file for details

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].