**What has changed?**
- **Multiple Importance Sampling (MIS) — cosine hemisphere + light-source sampling** :
This is the most directly relevant to your case. Cosine-weighted hemispheres are great for capturing general bounces (floors, large walls), but terrible for capturing small, bright light sources (torches, lanterns) — with GI_RAYS_PER_PIXEL only a few rays, the chance of one of them "happening" to hit that small torch is low, so the contribution becomes noisy/flickering. The solution: some rays remain cosine-weighted (general bounce), others are fired directly at the nearest emissive voxel (exactly the scan blockLightPointShadows.glsl already uses to find nearby lights), and then combined using the MIS balance heuristic to avoid double-counting. The emissive voxel search infrastructure already exists in your codebase, so this is realistic to implement with low risk.
- **Low-discrepancy sampling (R2 sequence / Sobol) replaces hash noise**
:
GiHash22 now uses a regular white-noise hash. Replacing it with a quasi-random sequence (R2/golden-ratio sequence, or Sobol) allows for a more even distribution of sample points across the hemisphere and faster convergence under TAA—reducing noise clumping without adding any rays. This is a cheap, low-risk swap that has a direct impact on visual stability (less sparkle/grain).
- Fix saturation and also ACES tonemap
- Fixes for Light bounce in the cosine hemisphere technique that caused light bounce to be misdirected and inconsistent :
Fix: Changed "mirror" to "bend towards grazing" — normals are only bent tangentially to the view direction, not bent through it. This is a standard technique for handling normal maps at grazing angles without breaking the actual bounce direction. I applied the same fix to two places with identical bug patterns: giNormal (using GI + SSGI voxels) and caoGiNormal (Contact AO).
- Improvements to the colors of torches and glowing objects with more realistic colors.
- Increased saturation that is more saturated and out
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }