Skip to content

ThomasOli/OpenGL-3D-Rendering-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenGL-3D-Rendering-Engine

An OpenGL rendering engine written in C++. The engine is small and light. It implements things like shadow mapping, ambient occlusion, and shader application. This engine is made open source through the MPL 2.0 license.

  • This is a software rasterizer for OpenGL
  • This does not use any existing graphics libraries

I wanted to try and understand the fundamentals of graphics rendering after getting a good GPU for my computer. I initiated a graphics rendering project to understand fundamental concepts, starting with basic 2D shapes and index buffers. This then evolved into a robust 3D rendering engine, featuring shaders, meshes, textures, and advanced lighting techniques (specular, diffuse, Blinn-Phong). Implemented dynamic camera motion, spotlight, point light, and directional lighting. I further enriched the engine with advanced graphics techniques, including Geometry Shaders, Multi-Object Instancing, Anti-Aliasing, Bloom, High Dynamic Range, Gamma Correction, Shadow Maps, Parallax Occlusion Mapping, and Face-Culling. The result is a visually captivating rendering engine, showcasing the journey from basics to sophisticated graphics programming.

This multifaceted rendering engine encompasses a spectrum of elements, starting with the implementation of shaders, meshes, objects, and textures. Noteworthy features include dynamic camera motion, specular and diffuse lighting, as well as the incorporation of spotlight, point light, directional lighting, and Blinn-Phong Lighting techniques for achieving nuanced and realistic visuals.

The project's evolution didn't stop there; additional graphics techniques were seamlessly integrated to enhance the rendering capabilities. This expansion included the implementation of Geometry Shaders for more complex geometries, Multi-Object Instancing for efficient rendering of numerous objects, and Anti-Aliasing to ensure smooth and artifact-free visuals. Bloom effects were introduced to add a layer of vibrancy, while High Dynamic Range (HDR) and Gamma Correction techniques were applied to achieve a more lifelike representation of light and color.

Delving deeper into the intricacies of rendering, the project also embraced Shadow Maps to cast realistic shadows, Parallax Occlusion Mapping for detailed surface rendering, and Face-Culling to optimize performance by excluding unseen geometry.

As the project unfolded, it evolved into a sophisticated custom 3D rendering engine, showcasing a progression from foundational concepts to advanced visual effects, evident in the captivating screenshots below.

Compiling

Ubuntu (and similar)

bash install-deps-ubuntu.sh
make
cd build/
./ThomasOpenGL.vcxproj

DEVELOPMENT PROCESS

Loading Verticies

image

Texture Loading

image

Loading 3-D Objects

image image image

Camera

image image

Lighting

image

image

image image image image

Point Lighting

image

image image imageimage

Directional Lighting

image imageimage

Spot Light

image image image

Third Party Code

Resources Used

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages