Skip to content

3D real time graphics application for Windows and Linux. Capable of importing 3D models, HDR environment textures, materials and animations. Renders 3D scene with different light casters along with different shadow casters. Has also post processing techniques such as Bloom, Blur, FXAA, SSAO.

License

Notifications You must be signed in to change notification settings

CheerWizard/Gabriel

Repository files navigation

Gabriel

FullLogo_Transparent

Introduction

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.

References & Links

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

Libraries

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

Features & Systems

Event Handling

  • Monitor
  • Keyboard
  • Mouse

Textures

  • 2D
  • Cubemap
  • Image load/store operator
  • Seamless cubemap
  • Mipmapping
  • Anisotropic Filtering

Camera

  • Movement
  • Look around
  • Zoom in/out
  • Select object
  • Drag object
  • Hover object

ECS

  • Entity
  • Components
  • Scene

Lighting

  • Phong
  • Directional
  • Point
  • Spot
  • HDR environment
  • Emissive

Shadows

  • Directional Shadow Mapping
  • Point Shadow Mapping

Rendering

  • PBR (Physically Based Rendering)
  • Deferred Shading
  • Basic Raytracer using Compute Shader

IO

  • Loading 3D models
  • Loading materials
  • Loading 3D skeletal animations
  • Loading any image, including HDR image

Materials

  • Albedo, Base Color
  • Bumping
  • Parallax Occlusion
  • Emission
  • Metallic
  • Roughness
  • Ambient Occlusion

Post-Processing effects

  • Bloom
  • Blur
  • HDR (high-dynamic range color), Tone mapping, Exposure
  • Gamma correction
  • FXAA (Fast Approximate Anti-Aliasing)
  • SSAO (Screen Space Ambient Occlusion)

Transparency

  • Sorted Scene
  • Weighted Blended

Animations

  • 3D Skeletal

UI

  • Text 2D
  • Text 3D

ImGui

  • 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

Network Core

  • TCP
  • UDP
  • IPv4
  • IPv6
  • Windows Socket
  • Linux Socket
  • IO serialization

Network Client

  • TCP support
  • UDP support
  • Retry Connection
  • Sending Data
  • Receiving Data

Network Server

  • TCP support
  • UDP support
  • Listening new connections
  • Sending Data
  • Receiving Data

Gallery

PBR and IBL

Знімок екрана (39)

Blur and Bloom

Знімок екрана (40)

HDR, Exposure, Tone mapping

Знімок екрана (42) Знімок екрана (41)

Debug Positions

Знімок екрана (43)

Debug Normals

Знімок екрана (44)

Debug Albedos

Знімок екрана (45)

Debug PBR params (metalness, roughness, ambient occlusion)

Знімок екрана (46)

Debug SSAO

Знімок екрана (48)

Debug Directional PCF Shadow Mapping

Знімок екрана (47)

UI viewports, docking, properties panel

Знімок екрана (51) Знімок екрана (49) Знімок екрана (50)

UI Entity, Components panels

Знімок екрана (52)

Emission Material

Знімок екрана (65) Знімок екрана (66) Знімок екрана (58) Знімок екрана (60)

FXAA

Знімок екрана (75) Знімок екрана (76)

UI theme, Gizmo, custom toolbar

https://www.instagram.com/p/CsqLJ7urE8P/

About

3D real time graphics application for Windows and Linux. Capable of importing 3D models, HDR environment textures, materials and animations. Renders 3D scene with different light casters along with different shadow casters. Has also post processing techniques such as Bloom, Blur, FXAA, SSAO.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published