Jorge Jimenez has released his slides regarding "Next Generation Post Processing in Call of Duty: Advanced Warfare". This talk is part of SIGGRAPH 2014 Advances in Real-Time Rendering in Games Course.

Link:
1. SIGGRAPH Course Website - http://advances.realtimerendering.com/s2014/index.html
2. Jorge's Website - http://www.iryoku.com/next-generation-post-processing-in-call-of-duty-advanced-warfare

Check out the awesome presentation slides! I feel honored to have been mentioned by Jorge in his slide, thanks Jorge!
To understand the concept of Compute Shader, let's start from basic.

Compute Shader (CS) Threads
A thread is basic CS processing element.

1. CPU kicks off CS thread groups.
// Total number of thread groups = nX * nY * nZ
pDevice->Dispatch( nX, nY, nZ );

2. Each CS declares the number of threads on the "thread group".
// Total number of threads per thread group = X * Y * Z
[numthreads(X,Y,Z)]
void cs_main(...)
{
   ...
}

Example
// CPU
pDevice->Dispatch( 3, 2, 1 );

// CS
[numthreads(4, 4, 1)]
void cs_main(...)
{
   ...
}

// # of thread groups = 3*2*1 = 6
// # of threads per group = 4*4*1 = 16
// # of total threads = 6 * 16 = 96

N.B: Picture taken from GDC09 Slide "Shader Model 5.0 and Compute Shader"

CS Parameter Input
void cs_main(uint3 groupID          : SV_GroupID,
             uint3 groupThreadID    : SV_GroupThreadID,
             uint3 dispatchThreadID : SV_DispatchThreadID,
             uint  groupIndex       : SV_GroupIndex)
{
   ...
}

// groupID          : index [0..nX), [0..nY), [0..nZ)
// groupThreadID    : index [0..X), [0..Y), [0..Z)
// dispatchThreadID : global thread offset = groupID.xyz * (X,Y,Z) + groupThreadID.xyz
// groupIndex       : flattened version of groupThreadID

That's it for now, we will continue with more stuff in Part 3!