summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2026-03-30 15:47:57 -0700
committeryum <yum.food.vr@gmail.com>2026-03-30 15:47:57 -0700
commit2b8e22958a701c313c45319f34fb162907da7857 (patch)
treed3b33a22f22d2dd35a9abd6e34b43e0f5580cf1d
parent03967824564349564c6968021d0b4955e377756c (diff)
Glitter: add spatial energy compensation
-rw-r--r--glitter.cginc8
1 files changed, 5 insertions, 3 deletions
diff --git a/glitter.cginc b/glitter.cginc
index 09ba0ea..ebacffe 100644
--- a/glitter.cginc
+++ b/glitter.cginc
@@ -152,10 +152,11 @@ float integrate_box(float2 x, float2 size, float2 mu, float2x2 sigma,
sqrt(sigma[1][1]), lower_limit.y, upper_limit.y);
}
-float compensation(float2 x_a, float2x2 sigma_a, float res_a) {
- float containing = integrate_box(0.5, 0.5, x_a, sigma_a, 0.0, 1.0);
+float compensation(float2 x, float2x2 sigma, float res) {
+ float containing = integrate_box(0.5, 0.5, x, sigma, 0.0, 1.0);
+ float2 sampled_cell_center = (floor(x * res) + 0.5) / res;
float explicitly_evaluated =
- integrate_box(round(x_a*res_a)/res_a, 1.0/res_a, x_a, sigma_a, 0, 1);
+ integrate_box(sampled_cell_center, 1.0 / res, x, sigma, 0, 1);
return containing - explicitly_evaluated;
}
@@ -217,6 +218,7 @@ float D_Kemppinen(float3 h, float alpha, float glint_alpha, float2 uv,
best_g_a = g_a;
}
D_filter += w_lambda * compensation(x_a, sigma_a, res_a);
+ D_filter += w_lambda * compensation(x_s, sigma_s, res_s);
}
micro_normal = normalize(disk_to_ndf_ggx(best_g_a, alpha));