It's time to modify the fragment shader to produce a PBR effect. Open pbrfrag.vs and make these modifications:
#version 330 core
..
#define NUM_LIGHTS 3
uniform light light_data[NUM_LIGHTS];
const float PI = 3.14159265359;
vec3 Fresnel(float HoV, vec3 metalness)
{
return metalness + (1.0 - metalness) *
pow(clamp(1.0 - HoV, 0.0, 1.0), 5.0);
}
float GGX(float NoH, float roughness)
{
float a = roughness*roughness;
float a2 = a*a;
float NoH2 = NoH*NoH;
float numerator = a2;
float denominator = (NoH2 * (a2 - 1.0) + 1.0);
denominator = PI * denominator * denominator;
return numerator / denominator;
}
float GASchlick(float Ndot, float roughness)
{
float r = (roughness + 1.0);
float k = (r*r) / 8.0;
float numerator = Ndot;
float denominator = Ndot * (1.0 - k) + k;
return numerator / denominator;
}
float GASmith(float NoV, float NoL, float roughness)
{
float gas2 = GASchlick(NoV, roughness);
float gas1 = GASchlick(NoL, roughness);
return gas1 * gas2;
}