@@ -454,7 +454,7 @@ void FinePruneLights(uint threadID, int iNrCoarseLights, uint2 viTilLL, float vL
454454 {
455455 LightVolumeData lightData = _LightVolumeData[idxCoarse];
456456 const bool bIsSpotDisc = true; // (lightData.flags&IS_CIRCULAR_SPOT_SHAPE) != 0;
457- for(int i=0; i<PIXEL_PER_THREAD && !lightValid ; i++)
457+ for(int i=0; i<PIXEL_PER_THREAD; i++)
458458 {
459459 int idx = t + i*NR_THREADS;
460460
@@ -477,12 +477,14 @@ void FinePruneLights(uint threadID, int iNrCoarseLights, uint2 viTilLL, float vL
477477#else
478478 lightValid = isValid;
479479#endif
480+ if (isValid)
481+ break;
480482 }
481483 }
482484 else if (uLightVolume == LIGHTVOLUMETYPE_SPHERE)
483485 {
484486 LightVolumeData lightData = _LightVolumeData[idxCoarse];
485- for(int i=0; i<PIXEL_PER_THREAD && !lightValid ; i++)
487+ for(int i=0; i<PIXEL_PER_THREAD; i++)
486488 {
487489 int idx = t + i*NR_THREADS;
488490
@@ -500,12 +502,14 @@ void FinePruneLights(uint threadID, int iNrCoarseLights, uint2 viTilLL, float vL
500502#else
501503 lightValid = isValid;
502504#endif
505+ if (isValid)
506+ break;
503507 }
504508 }
505509 else if (uLightVolume == LIGHTVOLUMETYPE_BOX)
506510 {
507511 LightVolumeData lightData = _LightVolumeData[idxCoarse];
508- for(int i=0; i<PIXEL_PER_THREAD && !lightValid ; i++)
512+ for(int i=0; i<PIXEL_PER_THREAD; i++)
509513 {
510514 int idx = t + i*NR_THREADS;
511515
@@ -523,6 +527,8 @@ void FinePruneLights(uint threadID, int iNrCoarseLights, uint2 viTilLL, float vL
523527#else
524528 lightValid = isValid;
525529#endif
530+ if (isValid)
531+ break;
526532 }
527533 }
528534 else
0 commit comments