Язык шейдеров высокого уровня
The High-Level Shader Language[ 1 ] или язык затенения высокого уровня [ 2 ] ( HLSL ) - это проприетарная затененная языка , разработанный Microsoft для Direct3D 9 API для увеличения языка сборки шейдера , и стал необходимым языком затенения для унифицированной модели шейдера Direct3D 10 и выше.
HLSL is analogous to the GLSL shading language used with the OpenGL standard. It is very similar to the Nvidia Cg shading language, as it was developed alongside it. Ранние версии двух языков считались идентичными, продавались только по -разному. [ 3 ] Шейдеры HLSL могут обеспечить глубокое увеличение скорости и детализации, а также множество спецэффектов как в 2D, так и в 3D -графике . [ Цитация необходима ]
Программы HLSL выпускаются в шести формах: пиксельные шейдеры (фрагмент в GLSL), вершины -шейдеры , геометрические шейдеры , вычислительные шейдеры , шейдеры для тесселляции (шейдеры корпуса и доменные шейдеры), а также шейдеры трассировки лучей (лучшие шейдеры, шейдеры перекрестки, любой удар/ближайший удар. /Мисс Шейдерс). Для каждой вершины, который представлен приложением, в первую очередь отвечает вершина для каждой вершины, которая представлена в первую очередь за преобразование вершины из пространства объектов для просмотра пространства, генерации координат текстуры и вычисления коэффициентов освещения, таких как нормальные, касательные и битангентные векторы вершины. Когда группа вершин (обычно 3, чтобы сформировать треугольник) проходит через шейдер вершины, их выходное положение интерполируется для формирования пикселей в пределах своей области; Этот процесс известен как растизация .
Необязательно, приложение с использованием интерфейса Direct3d 10/11/12 и аппаратного обеспечения Direct3d 10/11/12 также может указать шейдер с геометрией. Этот шейдер принимает в качестве ввода некоторые вершины примитивного (треугольник/линия/точка) и использует эти данные для генерации/вырождения (или теселлата ) дополнительных примитивов или для изменения типа примитивов, каждый из которых отправляется в раститель.
D3D11.3 и D3D12 представил модель шейдера 5.1 [ 4 ] и позже 6.0. [ 5 ]
Сравнение модели шейдера
[ редактировать ]Перечисленные графические процессоры - это аппаратное обеспечение, которое сначала поддержало заданные спецификации. Производители обычно поддерживают все модели с более низкими шейдерами через драйверов. Обратите внимание, что игры могут претендовать на то, чтобы требовать определенной версии DirectX, но не обязательно требует графического процессора, соответствующего полной спецификации этой версии, поскольку разработчики могут использовать более высокую версию API DirectX для нацеливания на оборудование с более низким уровнем 3D-спецификации; Например, DirectX 9 обнаруживает функции оборудования на уровне DirectX7, которые не делали DirectX7, нацеливаясь на их конвейер T & L с фиксированной функцией.
Сравнение пиксельных шейдеров
[ редактировать ]Pixel Шейдер Версия | 1.0 | 1.1 | 1.2
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 | 4 | 4 | 6 | 8 | Неограниченный | 8 | Неограниченный | Неограниченный |
Ограничение инструкции текстуры | 4 | 4 | 4 | 6 * 2 | 32 | Неограниченный | Неограниченный | Неограниченный | Неограниченный |
Арифметическое ограничение обучения | 8 | 8 | 8 | 8 * 2 | 64 | Неограниченный | Неограниченный | Неограниченный | Неограниченный |
Регистр положения | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Да | Да |
Слоты инструкции | 8 | 8 + 4 | 8 + 4 | (8 + 6) * 2 | 64 + 32 | 512 | 512 | ≥ 512 | ≥ 65536 |
Выполненные инструкции | 8 | 8 + 4 | 8 + 4 | (8 + 6) * 2 | 64 + 32 | 512 | 512 | 65536 | Неограниченный |
Текстура Королевания | 4 | 4 | 4 | 4 | 4 | Неограниченный | 4 | Неограниченный | Неограниченный |
Интерполированные регистры | 2 + 4 | 2 + 4 | 2 + 4 | 2 + 6 | 2 + 8 | 2 + 8 | 2 + 8 | 10 | 32 |
Предупреждение инструкции | Нет | Нет | Нет | Нет | Нет | Да | Нет | Да | Нет |
Индексные входные регистры | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Да | Да |
Температура регистров | 2 | 2 + 4 | 3 + 4 | 6 | С 12 до 32 | 22 | 32 | 32 | 4096 |
Постоянные регистры | 8 | 8 | 8 | 8 | 32 | 32 | 32 | 224 | 16×4096 |
Произвольный взрыв | Нет | Нет | Нет | Нет | Нет | Да | Нет | Да | Да |
Инструкции по градиенту | Нет | Нет | Нет | Нет | Нет | Да | Нет | Да | Да |
Реестр подсчета петли | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Да | Да |
Регистр лица (2-верльное освещение) | Нет | Нет | Нет | Нет | Нет | Нет | Да | Да | Да |
Динамический контроль потока | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Да (24) | Да (64) |
Побитовые операторы | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Да |
Родные целые числа | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Да |
- PS 1.0 - неизданный 3DFX Rampage, DirectX 8
- PS 1.1 - GeForce 3 , DirectX 8
- PS 1.2 - 3DLABS Wildcat VP, DirectX 8.1
- PS 1.3 - Dangercate 4 Ti , DirectX 8.1
- PS 1.4 - Radeon 8500-9250 , Matrox Parhelia , DirectX 8.1
- Shader Model 2.0 - Radeon 9500-9800/X300-X600 , DirectX 9
- Модель шейдера 2.0A -GeForce FX/PCX -Optimized Model, DirectX 9.0A
- Shader Model 2.0b - Radeon X700-X850 Shader Model, DirectX 9.0b
- Shader Model 3.0 - Radeon X1000 и Geforce 6 , DirectX 9.0c
- Shader Model 4.0 - Radeon HD 2000 и Geforce 8 , DirectX 10
- Шейдер модель 4.1 - Radeon HD 3000 и Geforce 200 , DirectX 10.1
- Shader Model 5.0 - Radeon HD 5000 и Geforce 400 , DirectX 11
- Шадер модель 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
- Шейдер модель 6.2 - GCN 1+, Kepler+, DirectX 12 (11_0+) с WDDM 2.4
- Модель шейдера 6.3 - GCN 1+, Kepler+, DirectX 12 (11_0+) с WDDM 2.5
- Шадер модель 6.4 - GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+) с WDDM 2.6
- Шейдер модель 6.5 - GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+) с WDDM 2.7
- Шейдер модель 6.6 - GCN 4+, Maxwell+, DirectX 12 (11_0+) с WDDM 3.0
- Шадер модель 6.7 - GCN 4+, Maxwell+, DirectX 12 (12_0+) с WDDM 3.1
- Шейдер модель 6.8 - rdna 1+, maxwell 2+, DirectX 12 (12_0+) с WDDM 3.2
«32 + 64» для выполненных инструкций означает »32 Инструкции по текстуре и 64 арифметические инструкции».
Сравнение вершины шейдеров
[ редактировать ]Версия вершины шейдера | 1.0 | 1.1 [ 14 ] | 2.0 [ 7 ] [ 14 ] [ 8 ] | 2.0A [ 7 ] [ 14 ] [ 8 ] | 3.0 [ 10 ] [ 14 ] | 4.0 [ 11 ] 4.1 [ 12 ] 5.0 [ 13 ] |
---|---|---|---|---|---|---|
# обстановки инструкций | 128 | 128 | 256 | 256 | ≥ 512 | ≥ 65536 |
Максимум # выполненных инструкций | 128 | 128 | 1024 | 65536 | 65536 | Неограниченный |
Предупреждение инструкции | Нет | Нет | Нет | Да | Да | Да |
Температура регистров | 12 | 12 | 12 | 16 | 32 | 4096 |
# постоянные регистры | ≥ 96 | ≥ 96 | ≥ 256 | 256 | ≥ 256 | 16×4096 |
Адрес регистр | Нет | Да | Да | Да | Да | Да |
Статический контроль потока | Нет | Нет | Да | Да | Да | Да |
Динамический контроль потока | Нет | Нет | Нет | Да | Да | Да |
Динамическая глубина управления потоком | — | — | — | 24 | 24 | 64 |
Вершина текстура | Нет | Нет | Нет | Нет | Да | Да |
# сэмплеров текстуры | — | — | — | — | 4 | 128 |
Геометрическая поддержка | Нет | Нет | Нет | Нет | Да | Да |
Побитовые операторы | Нет | Нет | Нет | Нет | Нет | Да |
Родные целые числа | Нет | Нет | Нет | Нет | Нет | Да |
Смотрите также
[ редактировать ]Сноски
[ редактировать ]- ^ «Написание шейдеров HLSL в Direct3d 9» . Microsoft Docs . Получено 22 февраля 2021 года .
- ^ «Язык высокого уровня шейдеров (HLSL)» . Microsoft Docs . Получено 22 февраля 2021 года .
- ^ "Fusion Industries :: CG и HLSL FAQ ::" . 24 августа 2012 года. Архивировано с оригинала 24 августа 2012 года.
- ^ «Шейдер модель 5.1 объекты» . Microsoft Docs . Получено 22 февраля 2021 года .
- ^ "HLSL Shader Model 6.0" . Microsoft Docs . Получено 22 февраля 2021 года .
- ^ Jump up to: а беременный в дюймовый и фон «Разница в пикселях шейдеров» . Microsoft Docs . Получено 22 февраля 2021 года .
- ^ Jump up to: а беременный в дюймовый и Пипер, Крейг; Митчелл, Джейсон Л. (июль 2003 г.). «Введение в язык Higherx 9 высокого уровня» . Microsoft Docs . Получено 22 февраля 2021 года .
- ^ Jump up to: а беременный в Шиппи, Ананд Лал . «NVIDIA представляет GeForce FX (NV30)» . Anandtech . Получено 22 февраля 2021 года .
- ^ Уилсон, Дерек. «Ati Radeon X800 Pro и XT Platinum Edition: R420 прибывает» . Anandtech . Получено 22 февраля 2021 года .
- ^ Jump up to: а беременный Shader Model 3.0, Ashu Rege, Nvidia Developer Technology Group, 2004.
- ^ Jump up to: а беременный Система Direct3d 10, Дэвид Блайт, Microsoft Corporation, 2006.
- ^ Jump up to: а беременный "Регистры - PS_4_1" . Microsoft Docs . Получено 22 февраля 2021 года .
- ^ Jump up to: а беременный "Регистры - PS_5_0" . Microsoft Docs . Получено 22 февраля 2021 года .
- ^ Jump up to: а беременный в дюймовый «Различия в вершине шейдера» . Microsoft Docs . Получено 22 февраля 2021 года .
Внешние ссылки
[ редактировать ]- Руководство по программированию для HLSL в Microsoft Docs
- Введение в язык затенения DirectX 9 , (ATI) AMD Developer Central
- Riemer's HLSL Введение и учебное пособие (включает пример кода) Архивировано 19 ноября 2008 г. на The Wayback Machine
- HLSL введение
- DirectX Intermediate Language (DXIL) Спецификация