[Bf-blender-cvs] [78faf075e4f] principled-v2: Use correct 0.5px offset for LUTs
Lukas Stockner
noreply at git.blender.org
Mon Jul 4 23:56:15 CEST 2022
Commit: 78faf075e4f5e83cc2a7544d2d8ea483c9e50d6a
Author: Lukas Stockner
Date: Mon Jul 4 23:31:48 2022 +0200
Branches: principled-v2
https://developer.blender.org/rB78faf075e4f5e83cc2a7544d2d8ea483c9e50d6a
Use correct 0.5px offset for LUTs
===================================================================
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 9e3f2d3913e..46ebe1539b4 100644
--- a/intern/cycles/kernel/closure/bsdf_microfacet_util.h
+++ b/intern/cycles/kernel/closure/bsdf_microfacet_util.h
@@ -79,7 +79,7 @@ ccl_device_forceinline float3 microfacet_ggx_sample_vndf(
}
/* Albedo correction.
- * TODO: Use proper lookup table code for this data. Also use 0.5px offset. */
+ * TODO: Use proper lookup table code for this data. */
ccl_device_forceinline float microfacet_ggx_glass_E(float mu, float rough, float ior)
{
@@ -88,9 +88,9 @@ ccl_device_forceinline float microfacet_ggx_glass_E(float mu, float rough, float
ior = 1.0f / ior;
}
- rough = saturatef(1 - rough) * 16.0f;
- mu = saturatef(mu) * 16.0f;
- ior = saturatef(sqrtf(0.5f * (ior - 1.0f))) * 16.0f;
+ rough = saturatef(1 - rough - 1.0f/32.0f) * 16.0f;
+ mu = saturatef(mu - 1.0f/32.0f) * 16.0f;
+ ior = saturatef(sqrtf(0.5f * (ior - 1.0f)) - 1.0f/32.0f) * 16.0f;
int rough_i = min(15, (int)rough);
int rough_i1 = min(15, rough_i + 1);
@@ -121,9 +121,9 @@ ccl_device_forceinline float microfacet_ggx_dielectric_E(float mu, float rough,
ior = 1.0f / ior;
}
- rough = saturatef(1 - rough) * 16.0f;
- mu = saturatef(mu) * 16.0f;
- ior = saturatef(sqrtf(0.5f * (ior - 1.0f))) * 16.0f;
+ rough = saturatef(1 - rough - 1.0f/32.0f) * 16.0f;
+ mu = saturatef(mu - 1.0f/32.0f) * 16.0f;
+ ior = saturatef(sqrtf(0.5f * (ior - 1.0f)) - 1.0f/32.0f) * 16.0f;
int rough_i = min(15, (int)rough);
int rough_i1 = min(15, rough_i + 1);
@@ -147,8 +147,8 @@ ccl_device_forceinline float microfacet_ggx_dielectric_E(float mu, float rough,
ccl_device_forceinline float microfacet_ggx_E(float mu, float rough)
{
- rough = saturatef(1 - rough) * 32.0f;
- mu = saturatef(mu) * 32.0f;
+ rough = saturatef(1 - rough - 1.0f/64.0f) * 32.0f;
+ mu = saturatef(mu - 1.0f/64.0f) * 32.0f;
int rough_i = min(31, (int)rough);
int rough_i1 = min(31, rough_i + 1);
@@ -165,7 +165,7 @@ ccl_device_forceinline float microfacet_ggx_E(float mu, float rough)
ccl_device_forceinline float microfacet_ggx_E_avg(float rough)
{
- rough = saturatef(1 - rough) * 32.0f;
+ rough = saturatef(1 - rough - 1.0f/64.0f) * 32.0f;
int rough_i = min(31, (int)rough);
int rough_i1 = min(31, rough_i + 1);
rough -= rough_i;
More information about the Bf-blender-cvs
mailing list