Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. vec3 EricHeitz2018GGX(in vec3 V, in vec3 L, in float roughness, in float anisotropic, in float ior)
  2. {
  3.     float alpha = roughness * roughness;
  4.     float aspect = sqrt(1.0 - 0.9 * anisotropic);
  5.     float alpha_x = alpha * aspect;
  6.     float alpha_y = alpha / aspect;
  7.  
  8.     vec3 H = normalize(L + V);
  9.     float NoV = CosTheta(V);
  10.     float NoL = CosTheta(L);
  11.     if (NoV < 0.0 || NoL < 0.0) return vec3(0);
  12.  
  13.     float VoH = dot(V, H);
  14.     float NoH = CosTheta(H);
  15.     vec3 F0 = vec3(abs((1.0 - ior) / (1.0 + ior)));
  16.     F0 = F0 * F0;
  17.  
  18.     float D = EricHeitz2018GGXD(H, alpha_x, alpha_y);
  19.     vec3 F = SchlickFresnel(max(NoV, 0.0), F0);
  20.     float G = EricHeitz2018GGXG2(V, L, alpha_x, alpha_y);
  21.     return (F * D * G) / (4.0f * VoH * NoH);
  22. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement