Высокого уровня Shader Language [1] или высокого уровня Shading Language [2] ( HLSL ) является собственностью язык затенения , разработанный Microsoft для Direct3D API 9 для увеличения шейдера сборки языка, и пошел дальше , чтобы стать требуется затенение языка для унифицированной шейдерной модели Direct3D 10 и выше.
HLSL аналогичен языку затенения GLSL, используемому в стандарте OpenGL . Он очень похож на язык затенения Nvidia Cg, поскольку он был разработан вместе с ним. Ранние версии двух языков считались идентичными, только по-разному продавались. [3] Шейдеры HLSL могут обеспечить значительное увеличение скорости и детализации, а также множество специальных эффектов как в 2D, так и в 3D компьютерной графике . [ необходима цитата ]
Программы HLSL бывают шести видов: пиксельные шейдеры (фрагмент в GLSL), вершинные шейдеры , геометрические шейдеры , вычислительные шейдеры , шейдеры тесселяции ( шейдеры корпуса и домена) и шейдеры трассировки лучей ( шейдеры генерации лучей, шейдеры пересечения, Any Hit / Closest Hit / Мисс Шейдеры). Вершинный шейдер выполняется для каждой вершины, отправляемой приложением, и в первую очередь отвечает за преобразование вершины из пространства объектов в пространство просмотра, генерацию координат текстуры и вычисление коэффициентов освещения, таких как векторы нормали, касательной и касательной к вершине. Когда группа вершин (обычно 3, чтобы сформировать треугольник) проходит через вершинный шейдер, их выходное положение интерполируется для формирования пикселей в его области; этот процесс известен как растеризация .
При желании приложение, использующее интерфейс Direct3D 10/11/12 и оборудование Direct3D 10/11/12, также может указывать геометрический шейдер. Этот шейдер принимает в качестве входных данных некоторые вершины примитива (треугольник / линия / точка) и использует эти данные для генерации / вырождения (или тесселяции ) дополнительных примитивов или для изменения типа примитивов, каждый из которых затем отправляется в растеризатор.
D3D11.3 и D3D12 представили Shader Model 5.1 [4] и более поздние версии 6.0. [5]
Сравнение шейдерных моделей
Перечисленные графические процессоры - это оборудование, которое впервые поддерживало указанные спецификации. Производители обычно поддерживают все модели нижних шейдеров через драйверы. Обратите внимание, что игры могут претендовать на определенную версию DirectX, но не обязательно требуют, чтобы графический процессор соответствовал полной спецификации этой версии, поскольку разработчики могут использовать более высокую версию DirectX API для нацеливания на оборудование с более низкой спецификацией Direct3D; например, DirectX 9 предоставляет возможности оборудования уровня DirectX7, которых не было в DirectX7, нацеленные на их конвейер T&L с фиксированными функциями.
Сравнение пиксельных шейдеров
Версия пиксельного шейдера | От 1,0 до 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] |
---|---|---|---|---|---|---|---|
Ограничение зависимых текстур | 4 | 6 | 8 | Безлимитный | 8 | Безлимитный | Безлимитный |
Предел инструкции текстуры | 4 | 6 * 2 | 32 | Безлимитный | Безлимитный | Безлимитный | Безлимитный |
Регистр позиций | Нет | Нет | Нет | Нет | Нет | да | да |
Слоты для инструкций | 8 + 4 | 8 + 4 | 32 + 64 | 512 | 512 | ≥ 512 | ≥ 65536 |
Выполненные инструкции | 8 + 4 | 6 * 2 + 8 * 2 | 32 + 64 | 512 | 512 | 65536 | Безлимитный |
Указания на текстуры | 4 | 4 | 4 | Безлимитный | 4 | Безлимитный | Безлимитный |
Интерполированные регистры | 2 + 4 | 2 + 6 | 2 + 8 | 2 + 8 | 2 + 8 | 10 | 32 |
Предикация инструкции | Нет | Нет | Нет | да | Нет | да | Нет |
Регистры ввода индекса | Нет | Нет | Нет | Нет | Нет | да | да |
Регистры температуры | 2 | 6 | От 12 до 32 | 22 | 32 | 32 | 4096 |
Постоянные регистры | 8 | 8 | 32 | 32 | 32 | 224 | 16 × 4096 |
Произвольная выпивка | Нет | Нет | Нет | да | Нет | да | да |
Инструкции по градиенту | Нет | Нет | Нет | да | Нет | да | да |
Регистр счетчика циклов | Нет | Нет | Нет | Нет | Нет | да | да |
Регистр лиц (двустороннее освещение) | Нет | Нет | Нет | Нет | да | да | да |
Динамическое управление потоком | Нет | Нет | Нет | Нет | Нет | Есть (24) | Есть (64) |
Побитовые операторы | Нет | Нет | Нет | Нет | Нет | Нет | да |
Родные целые числа | Нет | Нет | Нет | Нет | Нет | Нет | да |
- PS 1.0 - невыпущенный 3dfx Rampage, DirectX 8.
- PS 1.1 - GeForce 3 , DirectX 8.
- PS 1.2 - 3Dlabs Wildcat VP, DirectX 8.0a.
- PS 1.3 - GeForce 4 Ti , DirectX 8.0a.
- PS 1.4 - Radeon 8500-9250 , Matrox Parhelia , DirectX 8.1.
- Модель шейдеров 2.0 - Radeon 9500-9800 / X300-X600 , DirectX 9.
- Shader Model 2.0a - модель, оптимизированная для GeForce FX / PCX , DirectX 9.0a.
- Shader Model 2.0b - шейдерная модель Radeon X700-X850 , DirectX 9.0b.
- Модель шейдеров 3.0 - Radeon X1000 и GeForce 6 , DirectX 9.0c.
- Shader Model 4.0 - Radeon HD 2000 и GeForce 8 , DirectX 10.
- Shader Model 4.1 - Radeon HD 3000 и GeForce 200 , DirectX 10.1.
- Shader Model 5.0 - Radeon HD 5000 и GeForce 400 , DirectX 11.
- Shader Model 5.1 - GCN 1+ , Fermi +, DirectX 12 (11_0 +) с WDDM 2.0.
- Модель шейдеров 6.0 - GCN 1+, Kepler +, DirectX 12 (11_0 +) с WDDM 2.1.
- Модель шейдеров 6.1 - GCN 1+, Kepler +, DirectX 12 (11_0 +) с WDDM 2.3.
- Shader Model 6.2 - GCN 1+, Kepler +, DirectX 12 (11_0 +) с WDDM 2.4.
- Shader Model 6.3 - GCN 1+, Kepler +, DirectX 12 (11_0 +) с WDDM 2.5.
- Shader Model 6.4 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) с WDDM 2.6.
- Shader Model 6.5 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) с WDDM 2.7.
- Модель шейдеров 6.6 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) с WDDM 2.9.
- Шейдерная модель 6.7 -
«32 + 64» для исполняемых инструкций означает «32 инструкции текстуры и 64 арифметические инструкции».
Сравнение вершинных шейдеров
Версия вершинного шейдера | 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] |
---|---|---|---|---|---|
# слотов инструкций | 128 | 256 | 256 | ≥ 512 | ≥ 65536 |
Максимальное количество выполненных инструкций | 128 | 1024 | 65536 | 65536 | Безлимитный |
Предикация инструкции | Нет | Нет | да | да | да |
Регистры температуры | 12 | 12 | 16 | 32 | 4096 |
# константные регистры | ≥ 96 | ≥ 256 | 256 | ≥ 256 | 16 × 4096 |
Статический контроль потока | Нет | да | да | да | да |
Динамическое управление потоком | Нет | Нет | да | да | да |
Глубина динамического контроля потока | N / A | N / A | 24 | 24 | 64 |
Получение текстуры вершин | Нет | Нет | Нет | да | да |
Кол-во сэмплеров текстур | N / A | N / A | N / A | 4 | 128 |
Поддержка экземпляров геометрии | Нет | Нет | Нет | да | да |
Побитовые операторы | Нет | Нет | Нет | Нет | да |
Родные целые числа | Нет | Нет | Нет | Нет | да |
Смотрите также
- Direct3D
- DirectX
- Трассировка лучей DirectX
- GLSL
- Язык затенения
Сноски
- ^ «Написание HLSL шейдеров в Direct3D 9» . Документы Microsoft . Проверено 22 февраля 2021 года .
- ^ «Язык шейдеров высокого уровня (HLSL)» . Документы Microsoft . Проверено 22 февраля 2021 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Fusion Industries :: Cg и HLSL FAQ ::" . 24 августа 2012 года Архивировано из оригинала 24 августа 2012 года.
- ^ «Объекты шейдерной модели 5.1» . Документы Microsoft . Проверено 22 февраля 2021 года .
- ^ «HLSL Shader Model 6.0» . Документы Microsoft . Проверено 22 февраля 2021 года .
- ^ а б в г д е «Различия в пиксельных шейдерах» . Документы Microsoft . Проверено 22 февраля 2021 года .
- ^ а б в г д Пипер, Крейг; Митчелл, Джейсон Л. (июль 2003 г.). «Введение в язык шейдеров высокого уровня DirectX 9» . Документы Microsoft . Проверено 22 февраля 2021 года .
- ^ а б в Шимпи, Ананд Лал . «NVIDIA представляет GeForce FX (NV30)» . AnandTech . Проверено 22 февраля 2021 года .
- ^ Уилсон, Дерек. «ATI Radeon X800 Pro и XT Platinum Edition: прибытие R420» . AnandTech . Проверено 22 февраля 2021 года .
- ^ a b Shader Model 3.0, Ашу Реге, NVIDIA Developer Technology Group, 2004.
- ^ a b Система Direct3D 10, Дэвид Блайт, Microsoft Corporation, 2006.
- ^ а б «Регистры - ps_4_1» . Документы Microsoft . Проверено 22 февраля 2021 года .
- ^ а б «Регистры - ps_5_0» . Документы Microsoft . Проверено 22 февраля 2021 года .
- ^ а б в г «Различия вершинных шейдеров» . Документы Microsoft . Проверено 22 февраля 2021 года .
Внешние ссылки
- Руководство по программированию для HLSL в Microsoft Docs
- Введение в DirectX 9 High Level Shading Language , (ATI) Центр разработчиков AMD
- Введение и руководство по HLSL от Riemer (включая образец кода)
- HLSL Введение
- Спецификация промежуточного языка DirectX (DXIL)