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

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

  Обновл. 12 Июл 2020  | 

 1028

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

Словарь терминов в 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 — это высокоуровневый язык программирования, который используется для написания шейдеров.

L


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

M

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

O


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

S

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

U


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

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

Z

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

А

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

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

Б

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

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

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

В

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

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

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

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

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

Г

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

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

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

Д

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

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

Е

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

З

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

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

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

И

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

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

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

К

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

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

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

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

Л

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

М

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

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

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

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

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

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

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

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

Н

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

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

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

   Нормализация вектора — это процесс получения единичного вектора (длина которого равна 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 и до ширины/высоты экрана.

Р

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

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

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

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

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

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

С

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

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

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

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

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

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

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

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

Т

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

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

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

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

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

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

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

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

У

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

Ф

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

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

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

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

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

Ц

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

Ш

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

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

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

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

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