[Bf-blender-cvs] [86b8823b177] principled-v2: Fix precomputation lookup for IOR<1
Lukas Stockner
noreply at git.blender.org
Sun Jul 24 03:54:25 CEST 2022
Commit: 86b8823b177181d51c2abef8b11bfa78033ef7fb
Author: Lukas Stockner
Date: Sat Jul 23 19:59:17 2022 +0200
Branches: principled-v2
https://developer.blender.org/rB86b8823b177181d51c2abef8b11bfa78033ef7fb
Fix precomputation lookup for IOR<1
===================================================================
M intern/cycles/kernel/closure/bsdf_microfacet_util.h
===================================================================
diff --git a/intern/cycles/kernel/closure/bsdf_microfacet_util.h b/intern/cycles/kernel/closure/bsdf_microfacet_util.h
index e6688e8a82b..a1399bff5fe 100644
--- a/intern/cycles/kernel/closure/bsdf_microfacet_util.h
+++ b/intern/cycles/kernel/closure/bsdf_microfacet_util.h
@@ -88,13 +88,11 @@ ccl_device_forceinline float microfacet_ggx_glass_E(KernelGlobals kg,
float ior)
{
bool inv_table = (ior < 1.0f);
- if (inv_table) {
- ior = 1.0f / ior;
- }
int offset = inv_table ? kernel_data.tables.ggx_glass_inv_E_offset :
kernel_data.tables.ggx_glass_E_offset;
- float x = mu, y = 1 - rough, z = sqrtf(0.5f * (ior - 1.0f));
+ float x = mu, y = 1 - rough;
+ float z = sqrtf(0.5f * ((inv_table? 1.0f / ior : ior) - 1.0f));
return lookup_table_read_3D(kg, x, y, z, offset, 16, 16, 16);
}
@@ -104,9 +102,6 @@ ccl_device_forceinline float microfacet_ggx_dielectric_E(KernelGlobals kg,
float ior)
{
bool inv_table = (ior < 1.0f);
- if (inv_table) {
- ior = 1.0f / ior;
- }
int offset = inv_table ? kernel_data.tables.ggx_dielectric_inv_E_offset :
kernel_data.tables.ggx_dielectric_E_offset;
@@ -114,7 +109,7 @@ ccl_device_forceinline float microfacet_ggx_dielectric_E(KernelGlobals kg,
float F0 = fresnel_dielectric_cos(1.0f, ior);
float x = mix(mu, inverse_lerp(1.0f, F0, macro_fresnel), 0.5f);
float y = 1 - rough;
- float z = sqrtf(0.5f * (ior - 1.0f));
+ float z = sqrtf(0.5f * ((inv_table? 1.0f / ior : ior) - 1.0f));
return lookup_table_read_3D(kg, x, y, z, offset, 16, 16, 16);
}
More information about the Bf-blender-cvs
mailing list