Commit: 930186d3df9cb55832d625e96a9655491360ba1e
Author: Sergey Sharybin
Date:   Mon Feb 13 18:24:45 2017 +0100
Branches: master
https://developer.blender.org/rB930186d3df9cb55832d625e96a9655491360ba1e

Cycles: Optimize sorting of transparent intersections on CUDA

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

M       intern/cycles/kernel/bvh/bvh.h

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

diff --git a/intern/cycles/kernel/bvh/bvh.h b/intern/cycles/kernel/bvh/bvh.h
index dfd7010601..321983c1ab 100644
--- a/intern/cycles/kernel/bvh/bvh.h
+++ b/intern/cycles/kernel/bvh/bvh.h
@@ -378,16 +378,19 @@ ccl_device_inline void sort_intersections(Intersection 
*hits, uint num_hits)
 {
 #ifdef __KERNEL_GPU__
        /* Use bubble sort which has more friendly memory pattern on GPU. */
-       int i, j;
-       for(i = 0; i < num_hits; ++i) {
-               for(j = 0; j < num_hits - 1; ++j) {
+       bool swapped;
+       do {
+               swapped = false;
+               for(int j = 0; j < num_hits - 1; ++j) {
                        if(hits[j].t > hits[j + 1].t) {
                                struct Intersection tmp = hits[j];
                                hits[j] = hits[j + 1];
                                hits[j + 1] = tmp;
+                               swapped = true;
                        }
                }
-       }
+               --num_hits;
+       } while(swapped);
 #else
        qsort(hits, num_hits, sizeof(Intersection), intersections_compare);
 #endif

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to