/opengl_examples

Collection of examples for OpenGL: Perlin noise, ambient occlusion, shadow mapping, water reflection and others

Primary LanguageC++

OpenGL examples

This is a list of examples done a few years ago after taking a computer graphic course to better understand opengl and apply some of the techniques read in the litterature.

Content of the repo:

  • Triangle: hello world program, tests the display and the buffers
  • Rotating cube: Add movement in the scene and transormation matrices
  • Texture plane: Tests textures, both from an image and generated
  • Sphere light: Different lightings on a sphere: Flat Goureaud and Phong with interacitvity to select the lighting type
  • Terrain camera: A terrain generated with a Perlin noise in which we can navigate with either a free moving camera or a FPS-style one
  • Bumpmapping: Simulates bumps on a flat surface using random Perlin noise and pixel shader
  • Framebuffer: Displays the scene in a framebuffer, allowing post processing effects: gaussian blur, edge detection, etc.
  • LOD Terrain: Implementation of a perlin noise terrain with simple CPU LOD implementation (using quad tree), which is dynamically updated with camera position
  • Shadow mapping: Implementation of a dynamic shadow mapping using a depth buffer from the point of view of the light, smoothing techniques are applied on the shadow to make it less pixelated
  • Ambient occlusion: Deferred SSAO algorithm done in the shaders which give depth in a scene, a few different algorithms are implemented
  • Grass: Display 100k individual grass elements using instanced drawing and geometry shaders and make them move in the wind with a perlin noise
  • Water: Reflects objects on a water surface with waves distorting the reflexion
  • Sky: Displays a moving sun on a sky-sphere
  • Particles: A simple particles system using instanced drawing
  • Tree: Procedural generation of realistic trees using L-System
  • Atmospheric scattering: implemented in a similar way as in the GPU Gems 2 book
  • Volumetric clouds: using combination of 3d and 2d noises and particles
  • Texture filtering: use opengl to smooth textures
  • Tessellation shader: implement the level of detail directly in a shader

How to build

All of these examples have been tested on the following hardware:

  • Intel HD graphics 620
  • Nvidia GeForce 940MX

There were compiled on a Linux Mint 20, the needed libraries are the following:

  • glfw 3.3.2
  • glew 2.1.0
  • devIl 1.7.8
  • glm 0.9.9.7

Create a build folder in the example you want to build, then from the build folder, cmake .. to populate it and make to build the example