SV_GroupIndex

"Плоский" индекс потока шейдера вычислений в группе потоков, который превращает многомерный SV_GroupThreadID в 1D-значение. SV_GroupIndex зависит от 0 до (numthreadsX * numthreadsY * numThreadsZ) – 1.

Тип

Тип
uint

 

Комментарии

SV_GroupIndex = SV_GroupThreadID.z*dimx*dimy + 
                      SV_GroupThreadID.y*dimx + 
                      SV_GroupThreadID.x

где dimx и dimy — это измерения, указанные в атрибуте numthreads для точки входа.

Это системное значение является необязательным. Однако его использование гарантирует, что поток выполняет запись только в назначенную ему область памяти в переменной groupshared.

На следующем рисунке показана связь между параметрами, передаваемыми в ID3D11DeviceContext::D ispatch, Dispatch(5,3,2), значениями, указанными в атрибуте numthreads, numthreads(10,8,3), и значениями, которые будут переданы вычислительному шейдеру для системных значений, связанных с потоком (SV_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID).

Иллюстрация связи между диспетчером, группами потоков и потоками

Эта функция поддерживается в следующих типах шейдеров:

Вершина Корпуса Домен Geometry Пиксель Вычисления
x

 

См. также раздел

Семантика

Модель шейдера 5