diff options
author | Pascal Schoen <pascal.schoen@adidas-group.com> | 2017-05-18 14:15:32 +0300 |
---|---|---|
committer | Pascal Schoen <pascal.schoen@adidas-group.com> | 2017-05-18 14:18:19 +0300 |
commit | 32c9d2322ccbf1bcfbe8a320d1e334d5e5d63d7b (patch) | |
tree | df34c1918df8eeb7637661d84b648040b97ae378 /intern/cycles/kernel/shaders | |
parent | 208462e424d319b3590d0b09cacf0b3807239972 (diff) |
Fix T51408: Cycles - Principled BSDF Shader - Transparency is not working as expected
Renamed the "Transparency" input of the Principled BSDF to
"Transmission" and "Refraction Roughness" to "Transmission Roughness".
Diffstat (limited to 'intern/cycles/kernel/shaders')
-rw-r--r-- | intern/cycles/kernel/shaders/node_principled_bsdf.osl | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/intern/cycles/kernel/shaders/node_principled_bsdf.osl b/intern/cycles/kernel/shaders/node_principled_bsdf.osl index 39c6c7e5fd9..57f40789d49 100644 --- a/intern/cycles/kernel/shaders/node_principled_bsdf.osl +++ b/intern/cycles/kernel/shaders/node_principled_bsdf.osl @@ -34,17 +34,17 @@ shader node_principled_bsdf( float Clearcoat = 0.0, float ClearcoatGloss = 1.0, float IOR = 1.45, - float Transparency = 0.0, - float RefractionRoughness = 0.0, + float Transmission = 0.0, + float TransmissionRoughness = 0.0, normal Normal = N, normal ClearcoatNormal = N, normal Tangent = normalize(dPdu), output closure color BSDF = 0) { float f = max(IOR, 1e-5); - float diffuse_weight = (1.0 - clamp(Metallic, 0.0, 1.0)) * (1.0 - clamp(Transparency, 0.0, 1.0)); - float transp = clamp(Transparency, 0.0, 1.0) * (1.0 - clamp(Metallic, 0.0, 1.0)); - float specular_weight = (1.0 - transp); + float diffuse_weight = (1.0 - clamp(Metallic, 0.0, 1.0)) * (1.0 - clamp(Transmission, 0.0, 1.0)); + float final_transmission = clamp(Transmission, 0.0, 1.0) * (1.0 - clamp(Metallic, 0.0, 1.0)); + float specular_weight = (1.0 - final_transmission); vector T = Tangent; @@ -90,7 +90,7 @@ shader node_principled_bsdf( } } - if (transp > 1e-5) { + if (final_transmission > 1e-5) { color Cspec0 = BaseColor * SpecularTint + color(1.0, 1.0, 1.0) * (1.0 - SpecularTint); float eta = backfacing() ? 1.0 / f : f; @@ -98,18 +98,18 @@ shader node_principled_bsdf( float cosNO = dot(Normal, I); float Fr = fresnel_dielectric_cos(cosNO, eta); - float refl_roughness = Roughness; - if (Roughness <= 1e-2) - refl_roughness = 0.0; + float refl_roughness = Roughness; + if (Roughness <= 1e-2) + refl_roughness = 0.0; - float refraction_roughness = refl_roughness; + float transmission_roughness = refl_roughness; if (distribution == "GGX") - refraction_roughness = 1.0 - (1.0 - refl_roughness) * (1.0 - RefractionRoughness); + transmission_roughness = 1.0 - (1.0 - refl_roughness) * (1.0 - TransmissionRoughness); - BSDF = BSDF + transp * (Fr * microfacet_ggx_fresnel(Normal, refl_roughness * refl_roughness, eta, BaseColor, Cspec0) + - (1.0 - Fr) * BaseColor * microfacet_ggx_refraction(Normal, refraction_roughness * refraction_roughness, eta)); + BSDF = BSDF + final_transmission * (Fr * microfacet_ggx_fresnel(Normal, refl_roughness * refl_roughness, eta, BaseColor, Cspec0) + + (1.0 - Fr) * BaseColor * microfacet_ggx_refraction(Normal, transmission_roughness * transmission_roughness, eta)); } else { - BSDF = BSDF + transp * microfacet_multi_ggx_glass_fresnel(Normal, Roughness * Roughness, eta, BaseColor, Cspec0); + BSDF = BSDF + final_transmission * microfacet_multi_ggx_glass_fresnel(Normal, Roughness * Roughness, eta, BaseColor, Cspec0); } } |