diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-02-04 01:34:49 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-02-04 11:27:23 +0300 |
commit | ad26407b525c15595694aab49c0a7f1669886fc8 (patch) | |
tree | ba84c2ebf809aa8b1344c9959b2676a9a3fe012f /intern/cycles/kernel/shaders | |
parent | d8a998ce71f5dafa1f5681158bad8225ca289408 (diff) |
Cycles: Implement approximate reflectance profiles
Using this paper:
http://graphics.pixar.com/library/ApproxBSSRDF/paper.pdf
This model gives less blurry results than the Cubic and Gaussian
we had implemented:
- Cubic: https://developer.blender.org/F279670
- Burley: https://developer.blender.org/F279671
The model is called "Christensen-Burley" in the interface, which
actually should be read as "Physically based" or "Realistic".
Reviewers: juicyfruit, dingto, lukasstockner97, brecht
Reviewed By: brecht, dingto
Subscribers: robocyte
Differential Revision: https://developer.blender.org/D1759
Diffstat (limited to 'intern/cycles/kernel/shaders')
-rw-r--r-- | intern/cycles/kernel/shaders/node_subsurface_scattering.osl | 4 | ||||
-rw-r--r-- | intern/cycles/kernel/shaders/stdosl.h | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/intern/cycles/kernel/shaders/node_subsurface_scattering.osl b/intern/cycles/kernel/shaders/node_subsurface_scattering.osl index dbbf657776c..0a9a98afd33 100644 --- a/intern/cycles/kernel/shaders/node_subsurface_scattering.osl +++ b/intern/cycles/kernel/shaders/node_subsurface_scattering.osl @@ -28,7 +28,9 @@ shader node_subsurface_scattering( { if (Falloff == "Gaussian") BSSRDF = Color * bssrdf_gaussian(N, Scale * Radius, TextureBlur); - else + else if (Falloff == "Cubic") BSSRDF = Color * bssrdf_cubic(N, Scale * Radius, TextureBlur, Sharpness); + else + BSSRDF = Color * bssrdf_burley(N, Scale * Radius, TextureBlur, Color); } diff --git a/intern/cycles/kernel/shaders/stdosl.h b/intern/cycles/kernel/shaders/stdosl.h index 697a1756119..acf3ae8b1c7 100644 --- a/intern/cycles/kernel/shaders/stdosl.h +++ b/intern/cycles/kernel/shaders/stdosl.h @@ -510,6 +510,7 @@ closure color ambient_occlusion() BUILTIN; // BSSRDF closure color bssrdf_cubic(normal N, vector radius, float texture_blur, float sharpness) BUILTIN; closure color bssrdf_gaussian(normal N, vector radius, float texture_blur) BUILTIN; +closure color bssrdf_burley(normal N, vector radius, float texture_blur, color albedo) BUILTIN; // Hair closure color hair_reflection(normal N, float roughnessu, float roughnessv, vector T, float offset) BUILTIN; |