Язык шейдеров высокого уровня [1] или язык шейдеров высокого уровня [2] ( HLSL ) — это фирменный язык шейдеров, разработанный корпорацией Microsoft для API Direct3D 9 с целью дополнения языка ассемблера шейдеров и ставший обязательным языком шейдеров для унифицированной модели шейдеров Direct3D 10 и выше.
HLSL аналогичен языку шейдеров GLSL , используемому со стандартом OpenGL . Он очень похож на язык шейдеров Nvidia Cg , поскольку был разработан вместе с ним. Ранние версии двух языков считались идентичными, только продавались по-разному. [3] Шейдеры HLSL могут обеспечить значительное увеличение скорости и детализации, а также множество спецэффектов как в 2D, так и в 3D компьютерной графике . [ требуется ссылка ]
Программы HLSL бывают шести видов: пиксельные шейдеры (фрагмент в GLSL), вершинные шейдеры , геометрические шейдеры , вычислительные шейдеры , шейдеры тесселяции (шейдеры Hull и Domain) и шейдеры трассировки лучей (шейдеры генерации лучей, шейдеры пересечения, шейдеры любого попадания/близкого попадания/промаха). Вершинный шейдер выполняется для каждой вершины, отправленной приложением, и в первую очередь отвечает за преобразование вершины из пространства объектов в пространство вида, генерацию координат текстуры и вычисление коэффициентов освещения, таких как векторы нормали, касательной и бикасательной вершины. Когда группа вершин (обычно 3, чтобы сформировать треугольник) проходит через вершинный шейдер, их выходное положение интерполируется для формирования пикселей в его области; этот процесс известен как растеризация .
При желании приложение, использующее интерфейс Direct3D 10/11/12 и оборудование Direct3D 10/11/12, может также указать геометрический шейдер. Этот шейдер принимает в качестве входных данных некоторые вершины примитива (треугольник/линия/точка) и использует эти данные для генерации/вырождения (или тесселяции ) дополнительных примитивов или для изменения типа примитивов, каждый из которых затем отправляется в растеризатор.
В D3D11.3 и D3D12 была представлена Shader Model 5.1 [4] и более поздняя версия 6.0. [5]
Сравнение шейдерных моделей
Перечисленные графические процессоры — это оборудование, которое первым поддерживало данные спецификации. Производители обычно поддерживают все более низкие модели шейдеров через драйверы. Обратите внимание, что игры могут заявлять о необходимости определенной версии DirectX, но не обязательно требуют GPU, соответствующего полной спецификации этой версии, поскольку разработчики могут использовать более высокую версию DirectX API для таргетинга на оборудование с более низкими характеристиками Direct3D; например, DirectX 9 раскрывает возможности оборудования уровня DirectX7, которые DirectX7 не раскрывал, ориентируясь на их конвейер T&L с фиксированными функциями.
^ "Написание шейдеров HLSL в Direct3D 9". Microsoft Docs . Получено 22 февраля 2021 г.
^ "High-level shader language (HLSL)". Microsoft Docs . Получено 22 февраля 2021 г.
^ "Fusion Industries :: Cg и HLSL FAQ ::". 24 августа 2012 г. Архивировано из оригинала 24 августа 2012 г.
^ "Shader Model 5.1 Objects". Microsoft Docs . Получено 22 февраля 2021 г.
^ "HLSL Shader Model 6.0". Microsoft Docs . Получено 22 февраля 2021 г.
^ abcdef "Pixel Shader Differences". Microsoft Docs . Получено 22 февраля 2021 г.
^ abcde Peeper, Craig; Mitchell, Jason L. (июль 2003 г.). «Введение в язык шейдеров высокого уровня DirectX 9». Microsoft Docs . Получено 22 февраля 2021 г.
^ abc Shimpi, Anand Lal . "NVIDIA представляет GeForce FX (NV30)". AnandTech . Получено 22 февраля 2021 г.
^ Уилсон, Дерек. «ATI Radeon X800 Pro и XT Platinum Edition: появление R420». АнандТех . Проверено 22 февраля 2021 г.
^ ab Shader Model 3.0, Ашу Реге, NVIDIA Developer Technology Group, 2004.
^ ab Система Direct3D 10, Дэвид Блайт, Microsoft Corporation, 2006.
^ ab "Регистры - ps_4_1". Microsoft Docs . Получено 22 февраля 2021 г.
^ ab "Регистры - ps_5_0". Microsoft Docs . Получено 22 февраля 2021 г.
^ abcd "Vertex Shader Differences". Microsoft Docs . Получено 22 февраля 2021 г.
Внешние ссылки
Руководство по программированию для HLSL в Microsoft Docs
Введение в язык шейдеров высокого уровня DirectX 9 (ATI) AMD developer central
Введение и руководство по HLSL от Riemer (включая пример кода) Архивировано 19 ноября 2008 г. на Wayback Machine