Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. vec3 HammonEarlGgxDiffuseApprox(in DisneyMaterial mat, in vec3 wm, in vec3 wo, in vec3 wi)
  3. {
  4.     float NoV = CosTheta(wo);
  5.     float NoL = CosTheta(wi);
  6.  
  7.     if (NoV <= 0.0 || NoL <= 0.0) return vec3(0);
  8.  
  9.     float NoH = CosTheta(wm);
  10.     float VoL = dot(wo, wi);
  11.  
  12.     float alpha = mat.roughness * mat.roughness;
  13.  
  14.     float facing = 0.5 + 0.5 * VoL;
  15.     float roughy = facing * (0.9 - 0.4 * facing) * (0.5 + NoH)/NoH;
  16.     float smoothy = 1.05 * (1.0 - pow(1.0 - NoL, 5.0)) * (1.0 - pow(1.0 - NoV, 5.0));
  17.     float single = INV_PI * mix(smoothy, roughy, alpha);
  18.     float multi = alpha * 0.1159;
  19.     return mat.albedo * (single + mat.albedo * multi);
  20. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement