C++ 3D application that features mesh subdivision surface algorithms, phong tessellation, displacement maps, and much more. Implemented using a pointer-based Halfedge data structure.
Originally developed for the computer graphics course at the University of Milan - Bicocca, it is now serving as a playground to experiment with computer graphics, C++ design patterns implementations, and parallel algorithms.
W A S Dclassic movement forward and laterallySPACEBARmove vertically upLSHIFTmove vertically downOtoggle mouse (The letter, not the digit)
- OpenGL renderer with the Phong reflection model
- Import of assets via Assimp and textures via stb
- UI controls with ImGui
- Pointer based Halfedge data structure to manage mesh data
- Phong Tessellation
- Subdivision surface algorithms (Loop, Catmull-Clark, sqrt3)
- Displacement maps
- Finish refactoring the importer code
- Improve the performance of the subdivision surface algorithms to real-time (with Gregory patches? with parallelization?)
- Create a headless version to ease testing and profiling
- Support importing meshes at runtime
- Implement terrain rendering
- Implement progressive meshes
Build instructions in BUILD.md
