Vulkan PBR Renderer
As part of the rendering engine developement of my small engine, I have implemented PBR rendering using Vulkan API since the rendering part of the engine was on OpenGL and wanted to upgrade the infrastructure to Vulkan. In addition as a next step, wanted to integrate a simple skeletal animation system to my engine. I was able to achieve both milestones with a toy PBR renderer that I have written using Vulkan and C++. PBR renderer uses the shading model that is discussed in the article “Real Shading in Unreal Engine 4” [1].
Briefly it uses following algorithms & techniques as described in article:
- It uses split sum approximation for calculation specular and diffuse IBL contributions as described in the paper
- It uses Cook-Torrance BRDF model
- Disney’s GGX/Throwbridge Reitz normal distribution function
- Smith Model as geometry function
- Schlick’s approximation as fresnel function
I must admit this was one of the most satisfying results I have obtained among the results that I have shared in this blog :) .
You can find the results that I have obtained from my PBR implementation below:
References:
1 - http://blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_notes_v2.pdf