node_glossy_bsdf.osl 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * Copyright 2011-2013 Blender Foundation
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include "stdosl.h"
  17. #include "node_fresnel.h"
  18. shader node_glossy_bsdf(color Color = 0.8,
  19. string distribution = "GGX",
  20. float Roughness = 0.2,
  21. normal Normal = N,
  22. output closure color BSDF = 0)
  23. {
  24. float roughness = Roughness * Roughness;
  25. if (distribution == "sharp")
  26. BSDF = Color * reflection(Normal);
  27. else if (distribution == "beckmann")
  28. BSDF = Color * microfacet_beckmann(Normal, roughness);
  29. else if (distribution == "GGX")
  30. BSDF = Color * microfacet_ggx(Normal, roughness);
  31. else if (distribution == "Multiscatter GGX")
  32. BSDF = Color * microfacet_multi_ggx(Normal, roughness, Color);
  33. else
  34. BSDF = Color * ashikhmin_shirley(Normal, vector(0, 0, 0), roughness, roughness);
  35. }