From 1ecc426e19462909700dd86df351050a0c7468c2 Mon Sep 17 00:00:00 2001 From: yum Date: Tue, 25 Jun 2024 21:50:28 -0700 Subject: Implement proper fix to glitter flickering issue Discussed in shader dev discord, identified floating point divide as culprit. --- tooner_lighting.cginc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc index cc5d28d..7fbe4d1 100644 --- a/tooner_lighting.cginc +++ b/tooner_lighting.cginc @@ -325,9 +325,8 @@ float get_glitter(float2 uv, float3 worldPos, float3 normal, float density, float amount, float speed, float mask, float brightness, float angle, float power) { - uint2 uv_q = (uint2) floor(uv * density); - // rand2 is noisy and shitty - float glitter = (float) rand((uv_q.x * 997) ^ (uv_q.y * 991)); + precise float idensity = rcp(density); + float glitter = rand2(floor(uv * density) * idensity); float thresh = 1 - amount / 100; glitter = lerp(0, glitter, glitter > thresh); -- cgit v1.2.3