BitonicMergeSort_sort;ComputeBuffer_keys,_values;varcount=1<<10;_sort=newBitonicMergeSort(compute);_keys=newComputeBuffer(count,Marshal.SizeOf(typeof(uint)));_values=newComputeBuffer(count,Marshal.SizeOf(typeof(float)));varkey_data=newuint[count];varvalue_data=newfloat[count];_keys.SetData(key_data);for(vari=0;i<count;i++)value_data[i]=Random.value;_values.SetData(value_data);
_sort.Init(_keys);_sort.Sort(_keys,_values);
_keys.GetData(key_data);for(vari=0;i<count;i++)Debug.Log(value_data[key_data[i]]);
voidOnDestroy(){if(_sort!=null)_sort.Dispose();if(_keys!=null)_keys.Dispose();if(_values!=null)_values.Dispose();}- mre/bitonic_sort.cu - Gist
- Chapter 46. Improved GPU Sorting - GPU Gems 2
- Bitonic sorter - Wikipedia