El lenguaje de sombreado de alto nivel [1] o lenguaje de sombreado de alto nivel [2] ( HLSL ) es un lenguaje de sombreado propietario desarrollado por Microsoft para la API de Direct3D 9 para aumentar el lenguaje de ensamblaje de sombreadores y se convirtió en el lenguaje de sombreado requerido para el modelo de sombreador unificado de Direct3D 10 y versiones superiores.
HLSL es análogo al lenguaje de sombreado GLSL utilizado con el estándar OpenGL . Es muy similar al lenguaje de sombreado Cg de Nvidia , ya que se desarrolló junto con él. Las primeras versiones de los dos lenguajes se consideraban idénticas, solo que se comercializaban de forma diferente. [3] Los sombreadores HLSL pueden permitir grandes aumentos de velocidad y detalle, así como muchos efectos especiales en gráficos de computadora tanto 2D como 3D . [ cita requerida ]
Los programas HLSL vienen en seis formas: sombreadores de píxeles (fragmento en GLSL), sombreadores de vértices , sombreadores de geometría , sombreadores de cálculo , sombreadores de teselación (sombreadores de casco y dominio) y sombreadores de trazado de rayos (sombreadores de generación de rayos, sombreadores de intersección, sombreadores de impacto/impacto más cercano/error). 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 al 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) pasan por 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 .
De manera opcional, 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 un primitivo (triángulo/línea/punto) y utiliza estos datos para generar/degenerar (o teselar ) primitivos adicionales o para cambiar el tipo de primitivos, que luego se envían al rasterizador.
D3D11.3 y D3D12 introdujeron Shader Model 5.1 [4] y posteriormente 6.0. [5]
Comparación de modelos de sombreado
Las GPU que se enumeran son el hardware que primero admitió las especificaciones dadas. Los fabricantes generalmente admiten todos los modelos de sombreado 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 superior de la API de DirectX para apuntar a hardware con especificaciones inferiores a Direct3D; por ejemplo, DirectX 9 expone características del hardware de nivel DirectX7 que DirectX7 no exponía, apuntando a su canalización de T&L de función fija.
^ "Cómo 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 :: Preguntas frecuentes sobre Cg y HLSL ::". 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 .
^ abcdef «Diferencias de sombreado de píxeles». Microsoft Docs . Consultado el 22 de febrero de 2021 .
^ abcde Peeper, Craig; Mitchell, Jason L. (julio de 2003). "Introducción al lenguaje de sombreado de alto nivel de DirectX 9". Microsoft Docs . Consultado el 22 de febrero de 2021 .
^ abc 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 .
^ desde Shader Model 3.0, Ashu Rege, NVIDIA Developer Technology Group, 2004.
^ ab El sistema Direct3D 10, David Blythe, Microsoft Corporation, 2006.
^ ab "Registros - ps_4_1". Microsoft Docs . Consultado el 22 de febrero de 2021 .
^ ab "Registros - ps_5_0". Microsoft Docs . Consultado el 22 de febrero de 2021 .
^ abcd "Diferencias entre Vertex Shader". Microsoft Docs . Consultado el 22 de febrero de 2021 .