This project has a more or less educational goal on programming 3D real time graphics desktop application, from scratch. I am making this project on my own in order to have more practice in Computer Graphics. It doesn't mean that I am inventing comletely all ideas from scratch. I am still referencing to some other resources that have a quick and deep guide on certain features and systems. Project is written in C++ with OpenGL API and other libraries. You will find a list of libraries below.
Channel or Tutorial | Links |
---|---|
The Cherno | https://www.youtube.com/@TheCherno |
OGLDEV | https://www.youtube.com/@OGLDEV |
Learn OpenGL | https://learnopengl.com/ |
QianMo | https://gitea.yiem.net/QianMo/Real-Time-Rendering-4th-Bibliography-Collection |
Victor Gordan | https://www.youtube.com/@VictorGordan |
Jorge Rodriguez | https://www.youtube.com/@JorgeVinoRodriguez |
Library | Links |
---|---|
GLFW | https://github.com/glfw/glfw |
OpenGL Mathematics (GLM) | https://github.com/g-truc/glm |
stb | https://github.com/nothings/stb |
Open Asset Import Library (assimp) | https://github.com/assimp/assimp |
FreeType | https://freetype.org/ |
Dear ImGui | https://github.com/ocornut/imgui |
spdlog | https://github.com/gabime/spdlog |
- Monitor
- Keyboard
- Mouse
- 2D
- Cubemap
- Image load/store operator
- Seamless cubemap
- Mipmapping
- Anisotropic Filtering
- Movement
- Look around
- Zoom in/out
- Select object
- Drag object
- Hover object
- Entity
- Components
- Scene
- Phong
- Directional
- Point
- Spot
- HDR environment
- Emissive
- Directional Shadow Mapping
- Point Shadow Mapping
- PBR (Physically Based Rendering)
- Deferred Shading
- Basic Raytracer using Compute Shader
- Loading 3D models
- Loading materials
- Loading 3D skeletal animations
- Loading any image, including HDR image
- Albedo, Base Color
- Bumping
- Parallax Occlusion
- Emission
- Metallic
- Roughness
- Ambient Occlusion
- Bloom
- Blur
- HDR (high-dynamic range color), Tone mapping, Exposure
- Gamma correction
- FXAA (Fast Approximate Anti-Aliasing)
- SSAO (Screen Space Ambient Occlusion)
- Sorted Scene
- Weighted Blended
- 3D Skeletal
- Text 2D
- Text 3D
- Debug windows
- Screen window
- Entity panel
- Component panel
- Camera tab
- PostFX tab
- Monitor tab
- Custom title bar with icon and menus
- Gizmo for translating, rotating, scaling 3D objects
- Viewports
- Transform tab for updating gizmo modes
- Play, Pause, Sync buttons
- Fullscreen viewport button
- TCP
- UDP
- IPv4
- IPv6
- Windows Socket
- Linux Socket
- IO serialization
- TCP support
- UDP support
- Retry Connection
- Sending Data
- Receiving Data
- TCP support
- UDP support
- Listening new connections
- Sending Data
- Receiving Data