stringtranslate.com

Высокоуровневый язык шейдеров

Сцена, содержащая несколько различных 2D HLSL-шейдеров. Искажение статуи достигается чисто физически, в то время как текстура прямоугольной рамки рядом с ней основана на интенсивности цвета. Квадрат на заднем плане был преобразован и повернут . Частичная прозрачность и отражение воды на переднем плане добавляются шейдером, примененным в конечном итоге ко всей сцене.

Язык шейдеров высокого уровня [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 с фиксированными функциями.

Сравнение пиксельных шейдеров


«32 + 64» для исполняемых инструкций означает «32 текстурные инструкции и 64 арифметические инструкции».

Сравнение вершинных шейдеров

Смотрите также

Сноски

  1. ^ "Написание шейдеров HLSL в Direct3D 9". Microsoft Docs . Получено 22 февраля 2021 г.
  2. ^ "High-level shader language (HLSL)". Microsoft Docs . Получено 22 февраля 2021 г.
  3. ^ "Fusion Industries :: Cg и HLSL FAQ ::". 24 августа 2012 г. Архивировано из оригинала 24 августа 2012 г.
  4. ^ "Shader Model 5.1 Objects". Microsoft Docs . Получено 22 февраля 2021 г.
  5. ^ "HLSL Shader Model 6.0". Microsoft Docs . Получено 22 февраля 2021 г.
  6. ^ abcdef "Pixel Shader Differences". Microsoft Docs . Получено 22 февраля 2021 г.
  7. ^ abcde Peeper, Craig; Mitchell, Jason L. (июль 2003 г.). «Введение в язык шейдеров высокого уровня DirectX 9». Microsoft Docs . Получено 22 февраля 2021 г.
  8. ^ abc Shimpi, Anand Lal . "NVIDIA представляет GeForce FX (NV30)". AnandTech . Получено 22 февраля 2021 г.
  9. ^ Уилсон, Дерек. «ATI Radeon X800 Pro и XT Platinum Edition: появление R420». АнандТех . Проверено 22 февраля 2021 г.
  10. ^ ab Shader Model 3.0, Ашу Реге, NVIDIA Developer Technology Group, 2004.
  11. ^ ab Система Direct3D 10, Дэвид Блайт, Microsoft Corporation, 2006.
  12. ^ ab "Регистры - ps_4_1". Microsoft Docs . Получено 22 февраля 2021 г.
  13. ^ ab "Регистры - ps_5_0". Microsoft Docs . Получено 22 февраля 2021 г.
  14. ^ abcd "Vertex Shader Differences". Microsoft Docs . Получено 22 февраля 2021 г.

Внешние ссылки