Skip to content

Federicoand98/PathTracing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


PathTracing in OpenGL

A GPU-based PathTracing renderer for creating images with global illumination, advanced reflections, and physically-based materials.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

This project is a full GPU-based RayTracing with PathTracing Renderer written in C++ and OpenGL 4.3.

Product Name Screen Shot

This PathTracer project utilizes GPU acceleration through OpenGL Compute Shader to render various geometric shapes such as spheres, squares, triangles, cubes, and meshes. It employs global illumination and a BSDF (Bidirectional Scattering Distribution Function) lighting model, incorporating features like Russian roulette for ray termination, optimized ray-object intersections using Bounding Boxes and Axis-Aligned Bounding Boxes (AABB), and the Fresnel-Schlick approximation.

This PathTracer currently has:

  • GPU acceleration via compute shader
  • Monte Carlo unidirectional integrator
  • BSDF supporting Diffuse, Metal, Glossy, Emissive, and Glass
  • Russian Roulette for path termination
  • Super Sampling Antialiasing (SSAA)
  • Environment mapping with skybox
  • Support for wavefront obj meshes
  • HDR
  • A customizable PostProcessor
  • Support for triangles, squares, cubes, spheres, and meshes
  • AABB for cubes and meshes
  • Every scene element can be modified in real time from GUI
  • Interactive camera
  • A material system that can be modified in every parameter

We are looking to implement:

  • Acceleration structures (BHV)
  • Some boom effects
  • Texture mapping
  • Normal mapping

(back to top)

Built With

(back to top)

Some Renders

scene-1 scene-2 cb cb-2 app-1

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the Apache License. See LICENSE.txt for more information.

(back to top)

Contact

Federico Andrucci - federico.andrucci@gmail.com

Alex Gianelli - djgiane@yahoo.it

Project Link: https://github.com/Federicoand98/PathTracing

(back to top)

References

Use this space to list resources you find helpful and would like to give credit to. I've included a few of my favorites to kick things off!

(back to top)