Giter Site home page Giter Site logo

openglrenderer's Introduction

OpenGL Renderer

A 3D renderer developed as an introduction to real-time rendering.

This project is a 3D renderer developed as an introduction to real-time rendering. It was developed mainly during PUC-Rio's Real-Time Rendering class, and then further improved over winter recess. Credits for people and materials that help me are at the bottom of the page.

The Depth of Field implementation was a final assignment for the class. Here you can check out the final report and more information about the techniques used.

Features:

  • Load .obj files for meshes.
  • Load .png and .jpg for textures.
  • Load .mtl for material properties.
  • Importing diffuse, specular and ambient maps.
  • Support for multiple lights and models.
  • Basic camera movements.
  • Forward rendering.
  • Spotlights.
  • Phong Lighting Model, with diffuse, speccular and ambient lighting.
  • Shadow Mapping with soft shadows using jittered offsets, as seen here.
  • Bump Mapping, with vertices tangents calculated on mesh import.
  • Depth of Field (and bokeh) that can be toggled dinamically during runtime.

Images

Default configurations example:

Depth of Field example:

Bokeh when the scene is visualized from afar:

One light only soft shadow example:

Dependencies

  • GLEW
  • GLFW 3.3
  • OpenGL 4+

Credits and Thanks

The Cherno's youtube channel, for the Introduction to OpenGL Tutorials.

Joey De Vries' Learn OpenGL Tutorials for the incredible explanations and step-by-step guides.

Waldemar Celes, for the teaching of Real-Time Rendering class at PUC-Rio.

Bernard Lupiac for the guidance and help with debugging.

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.