Texture2DMS in0 : register(t0); RWTexture1D histogramBucketR : register(u1); RWTexture1D histogramBucketG : register(u2); RWTexture1D histogramBucketB : register(u3); RWTexture1D histogramOut : register(u4); [numthreads(16, 16, 1)] void main(uint3 id : SV_DispatchThreadID) { int3 iPixel = in0[id.xy].rgb * 255.0f; InterlockedAdd(histogramBucketR[iPixel.r], 1); InterlockedAdd(histogramBucketG[iPixel.g], 1); InterlockedAdd(histogramBucketB[iPixel.b], 1); }