El lenguaje de sombreado de alto nivel [1] o el lenguaje de sombreado de alto nivel [2] ( HLSL ) es un lenguaje de sombreado patentado desarrollado por Microsoft para la API de Direct3D 9 para aumentar el lenguaje ensamblador de sombreado y se convirtió en el lenguaje de sombreado requerido para el modelo de sombreador unificado de Direct3D 10 y superior.
HLSL es análogo al lenguaje de sombreado GLSL utilizado con el estándar OpenGL . Es muy similar al lenguaje de sombreado de Nvidia Cg, ya que se desarrolló junto con él. Las primeras versiones de los dos idiomas se consideraron idénticas, solo que se comercializaron de manera diferente. [3] Los sombreadores HLSL pueden permitir un gran aumento de velocidad y detalle, así como muchos efectos especiales en gráficos de computadora en 2D y 3D . [ cita requerida ]
Programas HLSL vienen en seis formas: sombreadores de píxeles (fragmento en GLSL), shaders de vértice , shaders de geometría , shaders de cómputo , shaders de triangulación (Hull y shaders de dominio), y rayos rastreo de shaders (Shaders Generación Ray, Intersección Shaders, Cualquier Hit / Hit más cercano / Miss Shaders). Se ejecuta un sombreador de vértices para cada vértice que envía la aplicación, y es el principal responsable de transformar el vértice del espacio de objetos en el espacio de visualización, generar coordenadas de textura y calcular coeficientes de iluminación como los vectores normal, tangente y bitangente del vértice. Cuando un grupo de vértices (normalmente 3, para formar un triángulo) atraviesa el sombreador de vértices, su posición de salida se interpola para formar píxeles dentro de su área; este proceso se conoce como rasterización .
Opcionalmente, una aplicación que utilice una interfaz Direct3D 10/11/12 y hardware Direct3D 10/11/12 también puede especificar un sombreador de geometría. Este sombreador toma como entrada algunos vértices de una primitiva (triángulo / línea / punto) y usa estos datos para generar / degenerar (o teselar ) primitivas adicionales o para cambiar el tipo de primitivas, que luego se envían al rasterizador.
D3D11.3 y D3D12 introdujeron Shader Model 5.1 [4] y versiones posteriores 6.0. [5]
Comparación de modelos de sombreado
Las GPU enumeradas son el hardware que primero admitió las especificaciones dadas. Los fabricantes generalmente admiten todos los modelos de sombreadores inferiores a través de controladores. Tenga en cuenta que los juegos pueden afirmar que requieren una determinada versión de DirectX, pero no necesariamente requieren una GPU que cumpla con la especificación completa de esa versión, ya que los desarrolladores pueden usar una versión de API de DirectX más alta para apuntar a hardware con especificaciones de Direct3D más bajas; por ejemplo, DirectX 9 expone características de hardware de nivel DirectX7 que DirectX7 no hizo, apuntando a su canalización T&L de función fija.
Comparación de sombreadores de píxeles
Versión de sombreado de píxeles | 1.0 a 1.3 [6] | 1.4 [6] | 2.0 [6] [7] | 2.0a [6] [7] [8] | 2.0b [6] [7] [9] | 3,0 [6] [10] | 4.0 [11] 4.1 [12] 5.0 [13] |
---|---|---|---|---|---|---|---|
Límite de textura dependiente | 4 | 6 | 8 | Ilimitado | 8 | Ilimitado | Ilimitado |
Límite de instrucción de textura | 4 | 6 * 2 | 32 | Ilimitado | Ilimitado | Ilimitado | Ilimitado |
Registro de posición | No | No | No | No | No | sí | sí |
Ranuras de instrucción | 8 + 4 | 8 + 4 | 32 + 64 | 512 | 512 | ≥ 512 | ≥ 65536 |
Instrucciones ejecutadas | 8 + 4 | 6 * 2 + 8 * 2 | 32 + 64 | 512 | 512 | 65536 | Ilimitado |
Indirecciones de textura | 4 | 4 | 4 | Ilimitado | 4 | Ilimitado | Ilimitado |
Registros interpolados | 2 + 4 | 2 + 6 | 2 + 8 | 2 + 8 | 2 + 8 | 10 | 32 |
Predicación de instrucción | No | No | No | sí | No | sí | No |
Registros de entrada de índice | No | No | No | No | No | sí | sí |
Registros de temperatura | 2 | 6 | 12 hasta 32 | 22 | 32 | 32 | 4096 |
Registros constantes | 8 | 8 | 32 | 32 | 32 | 224 | 16 × 4096 |
Swizzling arbitrario | No | No | No | sí | No | sí | sí |
Instrucciones de degradado | No | No | No | sí | No | sí | sí |
Registro de recuento de bucles | No | No | No | No | No | sí | sí |
Registro facial (iluminación de 2 caras) | No | No | No | No | sí | sí | sí |
Control de flujo dinámico | No | No | No | No | No | Sí (24) | Sí (64) |
Operadores bit a bit | No | No | No | No | No | No | sí |
Enteros nativos | No | No | No | No | No | No | sí |
- PS 1.0 : 3dfx Rampage inédito , DirectX 8.
- PS 1.1 : GeForce 3 , DirectX 8.
- PS 1.2 : vicepresidente de 3Dlabs Wildcat, DirectX 8.0a.
- PS 1.3 : GeForce 4 Ti , DirectX 8.0a.
- PS 1.4 : Radeon 8500-9250 , Matrox Parhelia , DirectX 8.1.
- Shader Model 2.0 : Radeon 9500-9800 / X300-X600 , DirectX 9.
- Shader Model 2.0a - GeForce FX / PCX - modelo optimizado, DirectX 9.0a.
- Shader Model 2.0b : modelo de sombreador Radeon X700-X850 , DirectX 9.0b.
- Shader Model 3.0 : Radeon X1000 y GeForce 6 , DirectX 9.0c.
- Shader Model 4.0 : Radeon HD 2000 y GeForce 8 , DirectX 10.
- Shader Model 4.1 : Radeon HD 3000 y GeForce 200 , DirectX 10.1.
- Shader Model 5.0 : Radeon HD 5000 y GeForce 400 , DirectX 11.
- Shader Model 5.1 - GCN 1+ , Fermi +, DirectX 12 (11_0 +) con WDDM 2.0.
- Shader Model 6.0 - GCN 1+, Kepler +, DirectX 12 (11_0 +) con WDDM 2.1.
- Shader Model 6.1 - GCN 1+, Kepler +, DirectX 12 (11_0 +) con WDDM 2.3.
- Shader Model 6.2 - GCN 1+, Kepler +, DirectX 12 (11_0 +) con WDDM 2.4.
- Shader Model 6.3 - GCN 1+, Kepler +, DirectX 12 (11_0 +) con WDDM 2.5.
- Shader Model 6.4 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) con WDDM 2.6.
- Shader Model 6.5 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) con WDDM 2.7.
- Shader Model 6.6 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) con WDDM 2.9.
"32 + 64" para instrucciones ejecutadas significa "32 instrucciones de textura y 64 instrucciones aritméticas".
Comparación de sombreadores de vértices
Versión del sombreador de vértices | VS 1.1 [14] | VS 2.0 [7] [14] [8] | VS 2.0a [7] [14] [8] | VS 3.0 [10] [14] | VS 4.0 [11] VS 4.1 [12] VS 5.0 [13] |
---|---|---|---|---|---|
# de espacios de instrucción | 128 | 256 | 256 | ≥ 512 | ≥ 65536 |
Número máximo de instrucciones ejecutadas | 128 | 1024 | 65536 | 65536 | Ilimitado |
Predicación de instrucción | No | No | sí | sí | sí |
Registros de temperatura | 12 | 12 | dieciséis | 32 | 4096 |
# registros constantes | ≥ 96 | ≥ 256 | 256 | ≥ 256 | 16 × 4096 |
Control de flujo estático | No | sí | sí | sí | sí |
Control de flujo dinámico | No | No | sí | sí | sí |
Profundidad de control de flujo dinámico | N / A | N / A | 24 | 24 | 64 |
Búsqueda de textura de vértice | No | No | No | sí | sí |
# de muestreadores de textura | N / A | N / A | N / A | 4 | 128 |
Soporte de creación de instancias de geometría | No | No | No | sí | sí |
Operadores bit a bit | No | No | No | No | sí |
Enteros nativos | No | No | No | No | sí |
Ver también
- Direct3D
- DirectX
- Trazado de rayos DirectX
- GLSL
- Lenguaje de sombreado
Notas al pie
- ^ "Escribir sombreadores HLSL en Direct3D 9" . Microsoft Docs . Consultado el 22 de febrero de 2021 .
- ^ "Lenguaje de sombreado de alto nivel (HLSL)" . Microsoft Docs . Consultado el 22 de febrero de 2021 .
- ^ "Fusion Industries :: Cg y HLSL FAQ ::" . 24 de agosto de 2012. Archivado desde el original el 24 de agosto de 2012.
- ^ "Objetos de Shader Model 5.1" . Microsoft Docs . Consultado el 22 de febrero de 2021 .
- ^ "HLSL Shader Model 6.0" . Microsoft Docs . Consultado el 22 de febrero de 2021 .
- ^ a b c d e f "Diferencias de Pixel Shader" . Microsoft Docs . Consultado el 22 de febrero de 2021 .
- ^ a b c d e Mirón, Craig; Mitchell, Jason L. (julio de 2003). "Introducción al lenguaje de sombreado de alto nivel DirectX 9" . Microsoft Docs . Consultado el 22 de febrero de 2021 .
- ^ a b c Shimpi, Anand Lal . "NVIDIA presenta GeForce FX (NV30)" . AnandTech . Consultado el 22 de febrero de 2021 .
- ^ Wilson, Derek. "ATI Radeon X800 Pro y XT Platinum Edition: llega R420" . AnandTech . Consultado el 22 de febrero de 2021 .
- ^ a b Shader Model 3.0, Ashu Rege, Grupo de tecnología de desarrolladores de NVIDIA, 2004.
- ^ a b El sistema Direct3D 10, David Blythe, Microsoft Corporation, 2006.
- ^ a b "Registros - ps_4_1" . Microsoft Docs . Consultado el 22 de febrero de 2021 .
- ^ a b "Registros - ps_5_0" . Microsoft Docs . Consultado el 22 de febrero de 2021 .
- ^ a b c d "Diferencias de Vertex Shader" . Microsoft Docs . Consultado el 22 de febrero de 2021 .
enlaces externos
- Guía de programación para HLSL en Microsoft Docs
- Introducción al lenguaje de sombreado de alto nivel DirectX 9 , (ATI) AMD developer central
- Introducción y tutorial de HLSL de Riemer (incluye código de muestra)
- Introducción a HLSL
- Especificación de lenguaje intermedio de DirectX (DXIL)