Program demonstrating OBJ model loading (OBJ Loader was used rather than ASIMP in the LearnOpenGL example) along with Signed Distance Field Fonts based on the 2007 SIGGRAPH paper from Chris Green of Valve used for Frames Per Second (FPS) display as well as writing.
Program demonstrating use of cubemaps to draw a background skybox, along with visible object depth, reflection surfaces, refraction surfaces, and multi-view single shader rendering.
Program demonstrating instancing using two different methods (pre-created matrices, and matrices in the vertex shader) vs independent draw calls per object, along with blinn-phong lighting relative to regular phong lighting.
Program demonstrating parallax mapping (per pixel surface height offsets) with image exposure and gamma lighting adjustments for High Definition Rendering (HDR).
Program demonstrating deferred shading (two step shading with lighting calculated on a depth image of the geometry). Point lights have also been changed to render to four layers of a single texture rather than four textures. Further icosahedrons have been added as an additional shape.
Program demonstrating Irradiance Based Lighting with PBR. (HDR lighting cubemaps with diffuse and specular contibution). Spheres with a range of PBR textures along with tetrahedron objects were added. The ability to adjust sphere hue is included. Further, point lights can now move dynamically for changing shadows and lighting, light frustrums can be drawn on screen to show lighting extents, and the multiple point lights can be switch between for individual lighting.
🧹 Source Files ReFactor, Font Colors, Grass, Texture Particles, and Paraboloid Mapping Shadows
🕵🏻
G. C. Putnam
🛈
Program refactoring the work from all the previous examples. Shaders have all been changed to have consistent naming. Font colors can now be changed. Grass models and textures have been added to test transparent objects. In addition, particles using texture storage have been added, along with paraboloid mapping shadows. Downloads had to be split for this example because the compressed files were too large.