[Bf-blender-cvs] [0bbccd3741b] temp-eeveelightcache: Eevee: LightCache: Fix problem caused by probe sorting

Clément Foucault noreply at git.blender.org
Mon Jul 9 23:03:49 CEST 2018


Commit: 0bbccd3741b0dec23279729da1d118dbd4fb9061
Author: Clément Foucault
Date:   Mon Jul 9 22:22:37 2018 +0200
Branches: temp-eeveelightcache
https://developer.blender.org/rB0bbccd3741b0dec23279729da1d118dbd4fb9061

Eevee: LightCache: Fix problem caused by probe sorting

===================================================================

M	source/blender/draw/engines/eevee/eevee_lightcache.c

===================================================================

diff --git a/source/blender/draw/engines/eevee/eevee_lightcache.c b/source/blender/draw/engines/eevee/eevee_lightcache.c
index 9f14aa581fb..adc6749e203 100644
--- a/source/blender/draw/engines/eevee/eevee_lightcache.c
+++ b/source/blender/draw/engines/eevee/eevee_lightcache.c
@@ -902,7 +902,7 @@ static bool eevee_lightbake_cube_comp(EEVEE_LightProbe *prb_a, EEVEE_LightProbe
 	return (vol_a < vol_b);
 }
 
-#define SORT_PROBE(elems_type, elems, elems_len, comp_fn) \
+#define SORT_PROBE(elems_type, prbs, elems, elems_len, comp_fn) \
 { \
 	bool sorted = false; \
 	while (!sorted) { \
@@ -910,6 +910,7 @@ static bool eevee_lightbake_cube_comp(EEVEE_LightProbe *prb_a, EEVEE_LightProbe
 		for (int i = 0; i < (elems_len) - 1; ++i) { \
 			if ((comp_fn)((elems) + i, (elems) + i+1)) { \
 				SWAP(elems_type, (elems)[i], (elems)[i+1]); \
+				SWAP(LightProbe *, (prbs)[i], (prbs)[i+1]); \
 				sorted = false; \
 			} \
 		} \
@@ -948,8 +949,8 @@ static void eevee_lightbake_gather_probes(EEVEE_LightBake *lbake)
 	}
 	DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END;
 
-	SORT_PROBE(EEVEE_LightGrid, lcache->grid_data + 1, lbake->grid_len - 1, eevee_lightbake_grid_comp);
-	SORT_PROBE(EEVEE_LightProbe, lcache->cube_data + 1, lbake->cube_len - 1, eevee_lightbake_cube_comp);
+	SORT_PROBE(EEVEE_LightGrid, lbake->grid_prb + 1, lcache->grid_data + 1, lbake->grid_len - 1, eevee_lightbake_grid_comp);
+	SORT_PROBE(EEVEE_LightProbe, lbake->cube_prb + 1, lcache->cube_data + 1, lbake->cube_len - 1, eevee_lightbake_cube_comp);
 
 	lbake->total = lbake->total_irr_samples * lbake->bounce_len + lbake->cube_len;
 	lbake->done = 0;



More information about the Bf-blender-cvs mailing list