Commit: c58a54bbf29fcac95e77e078336bed8d0f737865
Author: Pascal Schoen
Date:   Wed Nov 16 08:20:05 2016 +0100
Branches: cycles_disney_bsdf_transmittance
https://developer.blender.org/rBc58a54bbf29fcac95e77e078336bed8d0f737865

Better roughness remapping for thin surface specular refractions.

===================================================================

M       intern/cycles/kernel/svm/svm_closure.h

===================================================================

diff --git a/intern/cycles/kernel/svm/svm_closure.h 
b/intern/cycles/kernel/svm/svm_closure.h
index 6e75aee..4958bfd 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -123,7 +123,7 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, 
ShaderData *sd, float *
 
                        // calculate weights of the diffuse and specular part
                        float diffuse_weight = (1.0f - saturate(metallic)) * 
(1.0f - saturate(spec_trans)); // lerp(1.0f - clamp(metallic, 0.0f, 1.0f), 
0.0f, lerp(clamp(spec_trans, 0.0f, 1.0f), 0.0f, clamp(metallic, 0.0f, 1.0f)));
-                       
+
                        float spec_transp = saturate(spec_trans) * (1.0f - 
saturate(metallic)); // lerp(clamp(spec_trans, 0.0f, 1.0f), 0.0f, 
clamp(metallic, 0.0f, 1.0f));
                        float specular_weight = (1.0f - spec_transp); // + 
fresnel * spec_transp; // lerp(1.0f, fresnel, spec_transp);
 
@@ -438,9 +438,12 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, 
ShaderData *sd, float *
                                                                if(surface_type 
== THIN_SURFACE) {
                                                                        
refraction_roughness *= 0.65f * ior - 0.35f;
                                                                }
+                                                               else {
+                                                                       
refraction_roughness *= refraction_roughness;
+                                                               }
 
-                                                               bsdf->alpha_x = 
refraction_roughness * refraction_roughness;
-                                                               bsdf->alpha_y = 
refraction_roughness * refraction_roughness;
+                                                               bsdf->alpha_x = 
refraction_roughness;
+                                                               bsdf->alpha_y = 
refraction_roughness;
                                                                bsdf->ior = ior;
 
                                                                /* setup bsdf */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to