Code Monkey home page Code Monkey logo

cheerwizard / gabriel Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 0.0 282.25 MB

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: MIT License

CMake 1.23% C++ 85.06% GLSL 7.66% C 6.06%
opengl glfw3 glm stb stl

gabriel's Introduction

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/

gabriel's People

Contributors

cheerwizard avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.