Словарь терминов в OpenGL

  Дмитрий Бушуев  | 

  Обновл. 12 Окт 2020  | 

 1648

Здесь представлен глоссарий терминов в OpenGL, которые встречаются на протяжении изучения OpenGL, компьютерной графики и смежных областей. 130+ терминов.

Словарь терминов в OpenGL:

A

   Assimp (англ. «Open Asset Import Library» = «Свободная Библиотека Импорта Ресурсов») — это библиотека импорта 3D-моделей.

C


   CMake — это инструмент, который, с использованием заранее определенных сценариев, может из коллекции файлов исходного кода сгенерировать файлы проектов/решений под выбранную пользователем IDE (например, для Visual Studio, Code::Blocks или Eclipse).

   Compatibility-profile — это набор функций OpenGL, в котором работают все возможности как новых, так и старых версий OpenGL.

   Core-profile — это набор основных функций OpenGL, составляющих его «ядро», из которого, начиная с OpenGL версии 3.0, были удалены все устаревшие функции.

G

   GLAD — это библиотека загрузки расширений, которая загружает и устанавливает для нас все указатели на OpenGL-функции, чтобы мы могли использовать все (современные) функции OpenGL.

   GLFW (англ. «Graphics Library FrameWork») — это библиотека, написанная на языке Си, специально предназначенная для работы с OpenGL, которая предоставляет все необходимые инструменты для рендеринга на экран различных объектов.

   GLM — это математическая библиотека, специально разработанная для OpenGL.

   GLSL — это высокоуровневый язык программирования, который используется для написания шейдеров.

   G-буфер — это собирательный термин для всех текстур, хранящих в себе информацию, так или иначе связанную с освещением, задействованных на этапе прохода освещения.

L


   LookAt-матрица — это специальный тип матрицы вида, которая создает систему координат, где к координатам применяются преобразования вращения и перемещения таким образом, что в результате пользователь смотрит на заданную цель из заданной позиции.

M

   Mesh (или «меш») — это минимальная единица отрисовки объекта. Когда 3D-дизайнеры в своих программах моделируют какой-нибудь объект, то, обычно, его пытаются сделать не цельным, а составным. Каждая такая модель имеет несколько подмоделей/фигур, из которых она строится. При этом каждая из этих отдельных фигур называется mesh.

O


   OpenGL — это формальная спецификация графического API, которая определяет макет и выходные данные каждой функции.

S

   sRGB-пространство — это стандарт представления цветового спектра с использованием модели RGB.

   sRGB-текстура — это текстура, цвета которой соответствуют sRGB-пространству.

   SSAO (от англ. «Screen-Space Ambient Occlusion») — это алгоритм фонового непрямого затенения, работающий в режиме реального времени, при котором для определения величины фонового затенения используется буфер глубины сцены в координатах экранного пространства. Является расширением алгоритма затенения «AO».

   stb_image — это библиотека загрузки изображений.

T


   TBN-матрица — это матрица, составленная из касательного, бикасательного и нормального векторов.  Используется при преобразовании вектора касательного пространства в другое координатное пространство.

U

   uniform-буфер — это инструмент в OpenGL, позволяющий объявить набор глобальных uniform-переменных, которые остаются неизменными при использовании любого количества шейдерных программ. При работе с uniform-буферами мы указываем лишь единожды соответствующие uniform-переменные в фиксированной памяти графического процессора.

   uniform-переменная — это специальный тип GLSL-переменной, которая является глобальной (каждый шейдер в программе шейдеров может получить доступ к этой uniform-переменной) и должна быть установлена только один раз.

Z

   Z-конфликт — это основной визуальный артефакт, возникающий когда две плоскости или два треугольника расположены настолько близко друг к другу, что буферу глубины не хватает точности, чтобы определить, какая из двух фигур находится на переднем плане, а какая — на заднем. В результате получается, что две фигуры постоянно меняют порядок своей видимости.

А

   Алиасинг (англ. «aliasing») — это негативный визуальный эффект, наблюдаемый в виде наличия у объектов сцены зазубренных (несглаженных) краёв.

   Артефакты — это нежелательные визуальные эффекты по типу искажения цветов, форм объектов, несовместное движение частей изображения и т.д.

Б

   Бикасательный вектор — это вектор, перпендикулярный вектору нормали и касательному вектору.

   Билинейная фильтрация — это метод фильтрации текстур, при котором, для получения окончательного значения пикселя, используется выборка из нескольких пикселей исходной текстуры с последующим усреднением их значений.

   Буфер глубины (англ. «Z-buffer») — это массив данных, дополняющих изображение, благодаря которому можно реализовать учет удаленности элемента изображения. Когда видеокарта отображает пиксель, его удаленность заносится в буфер глубины. Если пиксели двух отображаемых объектов перекрывают друг друга, то их значения глубины сравниваются, и рисуется тот пиксель, который ближе.  Очень эффективен и практически не имеет недостатков при аппаратной реализации.

   Буфер трафарета — это буфер, хранящий информацию о каждом фрагменте. При выводе фрагментов на экран иногда возникает необходимость выводить не все фрагменты, а только часть из них, т.е. наложить трафарет (маску) на изображение. Для этого в OpenGL используется буфер трафарета. А далее, исходя из теста трафарета, выбрать, какие фрагменты необходимо отобразить, а какие — отбросить.

В

   Вектор — это математическая сущность, определяющая направление и/или положение в любом измерении.

   Векторное умножение/произведение — это математическая операция умножения двух векторов, возвращающая в результате третий вектор, перпендикулярный плоскости, в которой лежат умножаемые векторы.

   Вершина — это набор данных, представляющих одну точку.

   Вершинный атрибут — это набор данных, связанный с вершиной, например: координаты её местоположения в пространстве, цвет, нормаль, текстурные координаты и т.д. Когда речь заходит конкретно о вершинном шейдере, то принято каждую его входную переменную называть вершинным атрибутом.

   Вершинный шейдер — это программа, выполняемая видеокартой и производящая математические операции с вершинами. Является первым этапом графического конвейера.

   Всенаправленные карты теней — это способ моделирования теней, при котором вместо двухмерной карты глубины используется кубическая карта глубины.

Г

   Гамма-коррекция — это применение коррекции гаммы к конечному выходному цвету картинки перед её отображением на экране.

   Геометрический шейдер — это один из этапов графического конвейера (наряду с вершинным и фрагментным шейдерами), предназначенный для выполнения ряда задач, требующих работы на уровне отдельных геометрических примитивов.

   Глубина (или «значения глубины») — это информация о фрагментах (например, пикселях), использующаяся во время растеризации для того, чтобы определить — какие фрагменты блокируют (перекрывают) другие.

   Глубинный параллакс — является расширением обычного параллакса. Общая идея глубинного параллакса состоит в том, что вместо одной точки выборки он делит весь диапазон глубин на несколько слоев одинаковой высоты/глубины. Для каждого слоя производится выборка значения из карты глубины.

   Графический конвейер — это весь процесс преобразований, через который должны пройти вершины, прежде чем оказаться в виде одного или нескольких пикселей на экране.

Д

   Динамическая карта окружения — это динамически создаваемая кубическая карта окружения объекта, используемая в качестве карты окружения.

   Диффузная карта — это текстурное изображение, которое задает рассеянный цвет для каждого фрагмента.

Е

   Единичная матрица — это квадратная матрица размера N×N, у которой элементы, стоящие на диагонали от верхнего-левого угла до нижнего-правого, равны 1 (такую диагональ принято называть главной диагональю), а остальные — равны 0.

З

   Затенение по Гуро — это модель освещения Фонга, применяемая в вершинном шейдере. При использовании небольшого количества вершин создает заметные артефакты. Повышается производительность сцены в обмен на потерю визуального качества.

   Затенение по Фонгу — это модель освещения Фонга, применяемая во фрагментном шейдере.

   Затухание (англ. «attenuation») — это процесс уменьшения интенсивности света с увеличением пройденного расстояния, используемый в точечных источниках света и прожекторах.

И

   Инстансинг — это метод, при котором мы рисуем сразу несколько экземпляров объекта с помощью одного вызова рендеринга, экономя на взаимодействии CPU -> GPU.

   Интерполирование — это способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений.

   Интерфейсный блок — это встроенная в GLSL возможность группировать переменные, пересылаемые от одного шейдера к другому.

К

   Кадр/Фрейм (англ. «frame») — итерация цикла рендеринга.

   Карта глубины (или «теневая карта», «карта теней») — это текстура глубины, визуализируемая с точки зрения света, которая используется при проведении теста теней.

   Карта нормалей — это RGB-текстура, в которой хранятся вектора нормалей фрагментов поверхности, в которой R-, G- и B- каналы текстуры соответствуют X-, Y- и Z- координатам векторов нормалей.

   Карта отраженного цвета (англ. «specular map») — это текстурная карта, которая задает интенсивность отражения/цвет для каждого фрагмента. Позволяет создавать зеркальные блики только на определенных участках объекта.

   Касательное пространство — это совокупность всех касательных векторов к поверхности в заданной точке.

   Касательный вектор — это элемент касательного пространства, например: элемент касательной прямой к кривой, касательной плоскости к поверхности и так далее.

   Крен (англ. «roll») — это поворот объекта вокруг его продольной оси.

   Кубическая карта (англ. «cube map») — это текстура, содержащая 6 независимых 2D-текстур, каждая из которых представляет отдельно взятую сторону текстурированного куба.

Л

   Локальное пространство — это пространство, в котором начинается объект, включающее все координаты относительно начала (исходной точки) объекта.

М

   Материал — это фоновый, рассеянный и отраженный цвета, которые отбрасывает объект. Они задают цвет объекта.

   Матрица — это прямоугольный массив математических выражений с полезными свойствами преобразования.

   Матрица модели — это матрица преобразования, которая транслирует, масштабирует и/или вращает ваш объект, чтобы поместить его в том месте/ориентации окружающего мира, в котором он должен находиться.

   Матрица модель-вид — это объединение матрицы модели, определяющую положение примитивов, и матрицы вида, задающую положение (расположение и ориентацию) камеры.

   Мипмапы — это сохраненные уменьшенные версии текстуры, где текстура нужного размера выбирается в зависимости от расстояния до зрителя.

   Мировое/Глобальное пространство — это все координаты, относительно глобального начала координат.

   Модель Блинна-Фонга — это дополненная модель освещения Фонга, представленная в 1977 году Джеймсом Ф. Блинном. Во многом схожа с моделью Фонга, но реализация отражения у нее выполнена несколько иначе, а именно: вместо вектора отражения используется срединный вектор.

   Модель освещения Фонга — это модель для аппроксимации реального освещения путем вычисления фонового, рассеянного и отраженного компонентов света.

   Мультисэмпл-буфер — это буфер с возможностью хранить более одного значения цвета выборки на пиксель.

Н

   Наложение текстуры — определяет режим того, как OpenGL должен выполнять сэмплирование текстур, когда их координаты находятся вне диапазона (0; 1).

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

   Непосредственный режим — это режим отрисовки графики в OpenGL, требующий от программиста диктовать точную последовательность шагов для построения результирующего растрового изображения.

   Низкий динамический диапазон (сокр. «LDR» от «Low Dynamic Range») — это диапазон значений яркости цветов фрагментов, соответствующий стандартному диапазону [0.0; 0.1].

   Нормализация вектора — это процесс получения единичного вектора (длина которого равна 1). Для нормализации вектора достаточно разделить каждый компонент вектора на его норму. Используется для упрощения вычислений (например, при нахождении углов между векторами) и в тех случаях, когда нужно определить только направление для объекта.

   Нормализованные координаты устройства (англ. «NDC» от «Normalized Device Coordinates») — это система координат, в которой оказываются ваши вершины после перспективного деления, выполняемого в отсеченных координатах. Все координаты вершин в системе NDC, лежащие в диапазоне от -1.0 до 1.0 не будут отброшены или обрезаны и, в конечном итоге, отобразятся на экране.

   Нормальная матрица — это матрица размера 3×3, которая является матрицей модели (или модели-вида), не осуществляющая операции трансляции/перемещения. Она модифицируется таким образом (используя операции инвертирования-транспонирования), что при применении неоднородного масштабирования нормальные векторы остаются обращенными в правильном направлении. В противном случае, при использовании неоднородного масштабирования, нормальные векторы искажаются.

   Нормальный вектор — это единичный вектор, перпендикулярный поверхности.

О

   Объект — это набор параметров, представляющий подмножество состояния/контекста OpenGL.

   Объект Вершинного Буфера (англ. «VBO» от «Vertex Buffer Object») — это буферный объект, который выделяет память на графическом процессоре и хранит там все данные вершин для использования видеокартой.

   Объект Вершинного Массива (англ. «VAO» от «Vertex Array Object») — это объект, который хранит информацию о состоянии буфера и атрибута вершины.

   Объект Элементного Буфера (англ. «EBO» от «Element Buffer Object») — это объект буфера, который хранит индексы на графическом процессоре для индексированной отрисовки.

   Однородная координата — это w-компонента вектора, позволяющая выполнять матричные трансляции на 3D-векторах. Используется при построении 3D-перспективы.

   Окно просмотра (англ. «Viewport») — это часть 2D-окна, в которой мы рендерим наши сцены.

   Окружающее/Фоновое освещение (англ. «ambient lighting») — это аппроксимация глобального освещения путем придания каждому объекту небольшой яркости, чтобы объекты не были полностью темными, если они непосредственно не освещены.

   Ортографическая проекция — это проекция, при которой проекционные лучи перпендикулярны плоскости, на которую проецируется объект.

   Отражение — это свойство объекта (или части объекта) отражать окружающую его среду (например, цвета объекта более или менее равны его окружению в зависимости от угла зрения зрителя). Зеркало является отражающим объектом: оно отражает свое окружение в зависимости от угла зрения зрителя.

   Отраженное освещение (англ. «specular lighting») — определяет яркие блики, которые возникают, когда свет падает на поверхность объекта и отражается обратно в сторону зрителя. Зависит от направления взгляда зрителя, направления света и величины блеска, которые определяют величину рассеивания блика.

   Отсеченное пространство — это все координаты, рассматриваемые с точки зрения камеры, но с применением проекции. Это пространство, в котором должны находиться координаты вершин, представляемые в качестве выходных данных вершинного шейдера. OpenGL же делает всё остальное (отсечение/перспективное деление).

   Отложенное затенение — это способ визуализации объектов, при котором большая часть тяжелого рендеринга (например, освещение) откладывается на более позднюю стадию визуализации.

П

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

   Перспективное деление — это операция по преобразованию 4D-координат отсеченного пространства в 3D-координаты NDC. Осуществляется при помощи деления координат вектора на значение его же 4-й компоненты.

   Поле зрения (англ. «FoV») — это угловое пространство, обозреваемое глазом при зафиксированном взгляде и неподвижной голове. В реальном мире значение поля зрения составляет порядка 45 градусов. В компьютерных играх данная величина варьируется в среднем от 65 до 120 градусов (в зависимости от используемых монитора и настроек графики).

   Преломление — это изменение направления света вследствие изменения типа материала через который проходит свет. Это то, что мы обычно видим на поверхности, похожей на воду, где свет не идет четко по прямой, а немного изгибается. Это все равно, что смотреть на свою руку, когда она наполовину в воде.

   Примитивы — это простейшие элементы (точка, линия, полигон и пр.), из которых строятся более сложные объекты.

   Проекция — это перенос координат (или изображений) пространственных объектов на плоскость (или какую-либо другую поверхность).

   Прожектор (англ. «spotlight») — это источник света, который представляет собой световой конус, ориентированный вдоль заданного направления.

   Пространство окна просмотра (или «Видовое пространство») — это все координаты, рассматриваемые с точки зрения камеры.

   Пространство экрана — это все координаты, если смотреть с позиции экрана. Координаты варьируются от 0 и до ширины/высоты экрана.

   Процентно-приближенная фильтрация (сокр. «PCF» от англ. «Percentage-Closer Filtering») — это метод, при помощи которого можно сгладить  неровные края объекта путем фильтрации на основе нескольких точек выборки вокруг положения фрагмента и последующим усреднением результатов.

   Процесс ортогонализации Грамма-Шмидта — это алгоритм построения системы координат с тремя перпендикулярными единичными осями (т.н. «ортонормированного базиса»).

Р

   Размытие по Гауссу — это эффект пост-обработки, при котором происходит размытие изображения на основе т.н. Гауссовой кривой, которая обычно описывается как колоколообразная кривая, дающая высокие значения вблизи её центра и постепенно убывающие — к её краям.

   Раннее тестирование глубины — позволяет выполнить проверку глубины до запуска фрагментного шейдера. Всякий раз, когда становится ясно, что фрагмент не будет виден (он находится за другими объектами), его можно досрочно отбросить.

   Рассеянное/Диффузное затенение (англ. «diffuse shading») — это освещение, которое становится тем сильнее, чем больше вершина/фрагмент повернуты в сторону источника света. Использует нормальные векторы для вычисления углов.

   Растеризатор (англ. «rasterizer») — это комбинация всех алгоритмов и процессов, находящихся между финальным результатом обработки вершин и фрагментным шейдером.

   Расширенный динамический диапазон (сокр. «HDR» от «High Dynamic Range») — это технология работы с изображениями и видео, при которой значения яркости цветов фрагментов могут выходить за пределы стандартного диапазона значений [0.0; 1.0].

   Рендербуфер — это фактический буфер (например, массив байтов, целых чисел, пикселей или чего-то ещё), добавленный в OpenGL после введения текстур, в качестве возможного типа прикрепляемого объекта фреймбуфера. Объекты рендербуфера хранят все данные рендеринга непосредственно в своем буфере без каких-либо преобразований в текстурные форматы, что делает их более быстрыми в качестве записываемого носителя данных.

   Рендеринг (англ. «rendering») — это процесс преобразования геометрических и других числовых данных сцены/объекта в изображение, выводимое на экран компьютера (другими словами, визуализация).

   Рыскание (англ. «yaw») — это угловые движения объекта относительно вертикальной оси, а также небольшие изменения курса вправо или влево.

С

   Сглаживание (англ. «anti-aliasing») — это методы, которые призваны бороться с эффектом алиасинга, создавая более гладкие края.

   Сглаживание MSAA (от англ. «MultiSample Anti-Aliasing») — это метод сглаживания, заимствующий концепции SSAA, но при этом реализуя гораздо более эффективный подход в сглаживании зазубренных краёв объекта. При мультисемплинге увеличивается число дискретных выборок на каждый пиксель, но только для краёв объекта.

   Сглаживание SSAA (от англ. «Super Sample Anti-Aliasing») — это один из первых методов сглаживания, который для рендеринга сцены временно использует рендербуфер с гораздо более высоким разрешением. Затем, когда вся сцена будет визуализирована, разрешение уменьшается до нормального. Обладает серьезным недостатком в виде просадки по производительности, так как приходится рисовать намного больше фрагментов, чем обычно.

   Скайбокс (англ. «skybox») — это (большой) куб, который охватывает всю сцену и содержит 6 изображений окружения, создавая у игрока иллюзию, что окружающая среда, в которой он находится, имеет гораздо большие размеры, нежели на самом деле. Некоторые примеры скайбоксов, используемых в видеоиграх, — это изображения гор, облаков или звездного ночного неба.

   Скаляр — это самое обычное математическое число, которое имеет только свое численное значение.

   Скалярное умножение/произведение — это математическая операция умножения двух векторов, возвращающая в результате скаляр (число). Очень часто используется для определения параллельности/перпендикулярности векторов.

   Сэмплер — это тип данных (объект) в языке GLSL, который выполняет операцию сэмплирования текстуры.

   Сэмплирование — это получение цвета текстуры на основе её параметров (например, масштаба) с использованием текстурных координат.

Т

   Тангаж (англ. «pitch») — это угловое движение объекта относительно главной поперечной оси инерции (величину того, насколько мы смотрим вверх или вниз).

   Тексель (англ. «texel») — текстурный пиксель.

   Текстура — это особый тип изображения, используемый в шейдерах и обычно накладываемый на объекты, создавая иллюзию чрезвычайно детализированного объекта.

   Текстурные юниты — позволяют использовать несколько текстур в одной шейдерной программе, связывая несколько текстур, каждая из которых относится к другому текстурному блоку.

   Тональная компрессия — это процесс преобразования (без существенных потерь в детализации) HDR-значений цвета обратно в стандартный диапазон [0.0; 1.0] (известный как низкий динамический диапазон, часто сопровождаемый определенным стилистическим цветовым балансом).

   Точечный свет — это источник света с конкретно заданным местоположением в сцене, испускающий лучи, которые имеют тенденцию ослабевать с увеличением пройденного расстояния.

   Точка выборки (или «сэмпл») — это точка, находящаяся внутри каждого пикселя экрана, из которой происходит выборка цвета для определения результирующего цвета пикселя.

   Трансляция — это один из видов трансформации объекта (например, вектора) заключающийся в его параллельном переносе вдоль заданного направления из одной точки пространства в другую.

   Трафарет (или «значения трафарета») — это информация о фрагментах, использующаяся во время растеризации при проведении теста трафарета для определения того, какие фрагменты будут отображены на экране, а какие — нет.

У

   Углы Эйлера — определяют рыскание, тангаж и крен, которые позволяют нам сформировать любой 3D-вектор направления из этих 3-х значений.

Ф

   Фильтрация текстуры — определяет режим того, как OpenGL должен сэмплировать текстуру, когда на выбор есть несколько текстурных пикселей. Используется при увеличении масштаба текстуры.

   Фонарик (англ. «flashlight») — это прожектор, берущий свое начало из точки зрения зрителя.

   Фоновое затенение (сокр. «AO» от англ. «Ambient Occlusion») — это метод, имитирующий непрямое освещение путем затемнения складок, отверстий и поверхностей, расположенных близко друг к другу.

   Фрагмент — это все данные, необходимые OpenGL для визуализации одного пикселя.

   Фрагментный шейдер — аналогично вершинному шейдеру, только в отличие от него, фрагментный шейдер никак не влияет на координаты вершины, а используется для вычисления выходного цвета пикселей или фрагментов. Является предпоследним этапом графического конвейера.

   Фреймбуфер (англ. «framebuffer» = «буфер кадра, кадровый буфер, видеобуфер») — это объект, являющийся сочетанием нескольких буферов экрана (цветового, глубины, трафарета) и хранящийся в памяти графического процессора. Используется для кратковременного хранения одного или нескольких кадров в цифровом виде перед его отправкой на вывод. Может быть использован для выполнения над кадром различных предварительных операций.

Ц

   Цветовой вектор — это вектор, описывающий большинство цветов реального мира с помощью комбинации красного, зеленого и синего компонентов (сокр. «RGB» от англ. «Red, Green, Blue»). Цвет объекта — это отраженные компоненты цвета, которые объект не поглотил.

Ш

   Шейдер — это небольшая программа, которая работает на видеокарте. Несколько этапов графического конвейера могут использовать пользовательские шейдеры для замены существующего функционала.

Э

   Эффект бандинга — это графический артефакт в виде некоторой полосатости/сегментации изображения.

   Эффект параллакса — это изменение видимого положения объекта относительно удаленного фона в зависимости от положения наблюдателя.

   Эффект «Питера Пэна» — это графический артефакт, при котором объекты кажутся слегка отделенными от своих теней. Назван по имени сказочного персонажа, который потерял свою тень.

   Эффект «теневых угрей» — это графический артефакт, возникающий при использовании карт теней, при котором отбрасываемая объектом тень отображается в виде черных чередующихся линий.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (10 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *