Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Графический интерфейс прикладного программирования (Application Programming Interface, API).

Графический интерфейс прикладного программирования (Application Programming Interface, API).

Самые первые массовые ускорители использовали Glide - API для трёхмерной графики, разработанный 3dfx Interactive для видеокарт на основе собственных графических процессоров Voodoo Graphics, а затем появились API OpenCL, DirectX.

Недостатки конвейерной обработки данных в графических процессорах можно было бы решить, перейдя к архитектуре унифицированных процессоров, то есть когда не существует отдельных вершинных или пиксельных процессоров, а есть процессоры общего назначения, способные исполнять как вершинные, так и пиксельные шейдеры. Естественно, что для унифицированных процессоров потребуются и новые программы обработки, то есть шейдеры (Shader Model, SM). Унифицированные процессоры поддерживаются с API DirectX 10.

На программном уровне видеопроцессор для своей организации вычислений (расчётов трёхмерной графики) использует тот или иной интерфейс прикладного программирования (API). DirectX (как и OpenGL) - это графический интерфейс прикладного программирования (Application Programming Interface, API). До появления API каждый производитель графических процессоров использовал собственный механизм общения с играми, и разработчикам игр приходилось писать отдельный код для каждого графического процессора, который они хотели поддержать. Поэтому для каждой игры указывалось, какие именно видеокарты она поддерживает. Чтобы решить эту проблему, которая являлась серьезным тормозом для игровой индустрии, был разработан API, что позволило устранить зависимость между игрой и конкретным графическим процессором. Графические процессоры поддерживали определенные версии API, а разработчики игр писали коды под определенную версию API.

Существует два основных типа API: Microsoft DirectX и OpenGL. При этом нужно отметить, что большинство игр ориентировано именно на Microsoft DirectX. Стандарт DirectX включает API для звука, музыки, устройств ввода и т.д. За 3D-графику в DirectX отвечает API Direct3D, и когда говорят о видеокартах, то имеют в виду именно его (поэтому понятия DirectX и Direct3D взаимозаменяемы).

Стандарт DirectX постоянно обновляется. Каждая версия DirectX поддерживает определенные версии шейдеров (программ обработки вершин (Vertex Shader) и пикселов (Pixel Shader). Эти версии шейдеров называются Shader Model. К примеру, DirectX 8 поддерживает Pixel Shader от 1.0 до 1.3 и Vertex Shader 1.0, а DirectX 8.1— Pixel Shader 1.4 и Vertex Shader 1.1. В DirectX 9 поддерживаются Pixel Shader 2.0 и Vertex Shader 2.0, а в DirectX 9.0c— Pixel Shader 3.0.

Сейчас поколения ускорителей в видеокартах можно считать по версии DirectX, которую они поддерживают. Различают следующие поколения:

- DirectX 7 — карта не поддерживает шейдеры, все картинки рисуются наложением текстур;

- DirectX 8 — поддержка пиксельных шейдеров версий 1.0, 1.1 и 1.2, в DX 8.1 ещё и версию 1.4, поддержка вершинных шейдеров версии 1.0;

- DirectX 9 — поддержка пиксельных шейдеров версий 2.0, 2.0a и 2.0b, 3.0;

- DirectX 10 — поддержка унифицированных шейдеров версии 4.0;

- DirectX 10.1 — поддержка унифицированных шейдеров версии 4.1;

- DirectX 11 — поддержка унифицированных шейдеров версии 5.0;

- DirectX 12 — поддержка унифицированных шейдеров версии 6.0;

С выходом DirectX 11 и появлением модели поддержки API Feature Level (FLxx), видеокарты в большинстве своем перестали быть привязаны к конкретной версии DirectX. Первый графический процессор с поддержкой API DirectX 10 - это NVIDIA GeForce 8800.

Версия OpenGL обозначает то, какие операции графического ускорения поддерживает данная графическая карта:

- OpenGL 1.1 — Объекты текстур;

- OpenGL 1.2 — 3D-текстуры, форматы BGRA и упакованных пикселей;

- OpenGL 1.3 — Мультитекстурирование, multisampling, сжатие текстур;

- OpenGL 1.4 — Текстуры глубины;

- OpenGL 1.5 — VBO, Occlusion Querys;

- OpenGL 2.0 — GLSL 1.1, MRT, текстуры с размерами, не являющимися степенью двойки, Point Sprites, Two-sided stencil;

- OpenGL 2.1 — GLSL 1.2, Pixel Buffer Object (PBO), текстуры sRGB;

- OpenGL 3.0 — GLSL 1.3, Массивы текстур, условный рендеринг , FBO;

- OpenGL 3.1 — GLSL 1.4, Instancing, Texture Buffer Object, Uniform Buffer Object, Primitive restart;

- OpenGL 3.2 — GLSL 1.5, Geometry Shader, Multi-sampled textures;

- Buffer Object: FBO (Frame), VBO (Vertex), PBO (Pixel), Texture, Uniform;

- OpenGL 4.0 — GLSL 4.00, Тесселяция на GPU, шейдеры с 64-битной точностью.

Стандарт OpenGL тоже постоянно обновляется, Vulkan API изначально был известен как «новое поколение OpenGL» или просто «glNext», но после анонса компания отказалась от этих названий в пользу названия Vulkan. Спецификация Vulkan 1.1 была запущена в марте 2018 года, чтобы расширить основные функциональные возможности Vulkan с функциями, запрошенными разработчиками, такими как операции с подгруппами, а также интегрировать широкий спектр проверенных расширений от Vulkan 1.0.

2018 год для игровой индустрии положил начало внедрению трассировки лучей в реальном времени: многие крупные компании и разработчики трудятся над решением этой проблемы. Очередным шагом NVIDIA в этой области стала работа над расширением для API Vulkan, которое, по аналогии с RTX для DXR, позволит использовать в играх трассировку лучей.

NVIDIA работает над переносом своей технологии RTX в Vulkan через расширение VK_NV_raytracing, которое хорошо совместимо с открытым графическим API. Компания предложила свой метод группе Khronos и стремится к стандартизации технологии трассировки лучей в реальном времени в рамках Vulkan. Другими словами, в перспективе такой метод сможет работать как на ускорителях GeForce, так и на Radeon и даже Intel Graphics (если будут достаточно мощные решения). NVIDIA подчёркивает, что структура близка к Microsoft DXR, что упростит жизнь разработчикам (DXR - это расширение программного интерфейса DirectX 12 новым компонентом DirectX Raytracing API (DXR). Благодаря данным технологиям разработчики смогут применять трассировку лучей в реальном времени для создания реалистичных графических эффектов в играх).

 


Лицензия