summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2024-06-25 21:50:28 -0700
committeryum <yum.food.vr@gmail.com>2024-06-25 21:50:28 -0700
commit1ecc426e19462909700dd86df351050a0c7468c2 (patch)
tree3f543f1cbdbaae114381fc655c5bc7a043938a89
parent312d7acc39b4dc33edd3fdc3d3d77d373b5cb198 (diff)
Implement proper fix to glitter flickering issue
Discussed in shader dev discord, identified floating point divide as culprit.
-rw-r--r--tooner_lighting.cginc5
1 files 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);