Información general sobre el sombreador de proceso

Un sombreador de proceso es una fase de sombreador programable que expande Microsoft Direct3D 11 más allá de la programación de gráficos. La tecnología de sombreador de proceso también se conoce como tecnología DirectCompute.

Al igual que otros sombreadores programables (sombreadores de vértices y geometrías, por ejemplo), un sombreador de proceso se ha diseñado e implementado con HLSL , pero se trata de dónde termina la similitud. Un sombreador de proceso proporciona computación de uso general de alta velocidad y aprovecha el gran número de procesadores paralelos en la unidad de procesamiento gráfico (GPU). El sombreador de proceso proporciona características de sincronización de subprocesos y uso compartido de memoria para permitir métodos de programación paralelos más eficaces. Llama al método ID3D11DeviceContext::D ispatch o ID3D11DeviceContext::D ispatchIndirect para ejecutar comandos en un sombreador de proceso. Un sombreador de proceso se puede ejecutar en muchos subprocesos en paralelo.

Uso del sombreador de proceso en hardware de Direct3D 10.x

Un sombreador de proceso en Microsoft Direct3D 10 también se conoce como DirectCompute 4.x.

Si usas la API de Direct3D 11 y los controladores actualizados, el nivel de característica 10 y el hardware de Direct3D 10.1 pueden admitir opcionalmente una forma limitada de DirectCompute que usa los perfiles de cs_4_0 y cs_4_1. Al usar DirectCompute en este hardware, tenga en cuenta las siguientes limitaciones:

  • El número máximo de subprocesos se limita a D3D11_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP (768) por grupo.
  • La dimensión X e Y de numthreads se limita a D3D11_CS_4_X_THREAD_GROUP_MAX_X (768) y D3D11_CS_4_X_THREAD_GROUP_MAX_Y (768).
  • La dimensión Z de numthreads está limitada a 1.
  • La dimensión Z del envío se limita a D3D11_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION (1).
  • Solo se puede enlazar una vista de acceso desordenado al sombreador (D3D11_CS_4_X_UAV_REGISTER_COUNT es 1).
  • Solo RWStructuredBuffers y RWByteAddressBufferestán disponibles como vistas de acceso desordenado.
  • Un subproceso solo puede acceder a su propia región en memoria compartida de grupo para escribir, aunque puede leer desde cualquier ubicación.
  • SV_GroupIndex o SV_GroupThreadID deben usarse al acceder a la memoria compartida de grupo para escribir.
  • La memoria compartida de grupo está limitada a 16 KB por grupo.
  • Un único subproceso se limita a una región de 256 bytes de memoria compartida de grupo para escribir.
  • No hay instrucciones atómicas disponibles.
  • No hay ningún valor de precisión doble disponible.

Usar sombreador de proceso en hardware de Direct3D 11.x

Un sombreador de proceso en Direct3D 11 también se conoce como DirectCompute 5.0.

Al usar DirectCompute con perfiles de cs_5_0, tenga en cuenta los siguientes elementos:

  • El número máximo de subprocesos se limita a D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP (1024) por grupo.
  • La dimensión X e Y de numthreads se limita a D3D11_CS_THREAD_GROUP_MAX_X (1024) y D3D11_CS_THREAD_GROUP_MAX_Y (1024).
  • La dimensión Z de numthreads se limita a D3D11_CS_THREAD_GROUP_MAX_Z (64).
  • La dimensión máxima de envío se limita a D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION (65535).
  • El número máximo de vistas de acceso desordenado que se pueden enlazar a un sombreador es D3D11_PS_CS_UAV_REGISTER_COUNT (8).
  • Admite RWStructuredBuffers, RWByteAddressBuffers y vistas de acceso sin ordenar (RWTexture1D, RWTexture2D, RWTexture3D, etc.).
  • Hay instrucciones atómicas disponibles.
  • La compatibilidad con precisión doble podría estar disponible. Para obtener información sobre cómo determinar si la precisión doble está disponible, consulte D3D11_FEATURE_DOUBLES.

En esta sección

Tema Descripción
Nuevos tipos de recursos
Se han agregado varios tipos de recursos nuevos en Direct3D 11.
Acceso a recursos
Hay varias maneras de acceder a los recursos.
Funciones atómicas
Para acceder a un nuevo tipo de recurso o memoria compartida, use una función intrínseca interbloqueada. Se garantiza que las funciones interbloqueadas funcionen de forma atómica. Es decir, se garantiza que se produzcan en el orden programado. En esta sección se enumeran las funciones atómicas.

Canalización de gráficos

Cómo: Crear un sombreador de proceso