Массивы (Arrays)

Однотипные переменные могут быть объединены в массивы путем объявления имени и последующих квадратных скобок ( [] ), которые могут содержать (но не обязательно) размер массива.  Размер указанный при объявлении должен быть целочисленным постоянным выражением (см. раздел 4.3.3 “Constant Expressions”) больше… Continue Reading

Структуры (Structures)

Пользовательские типы могут быть созданы путем объединения других, уже определенных, типов в структуры, используя ключевое слово struct. Например: struct light { float intensity; vec3 position; } lightVar; В данном примере light является именем нового типа, а lightVar является переменной данного типа. Что… Continue Reading

Атомарные счетчики (Atomic Counters)

Типы атомарных счетчиков (atomic_uint) являются непрозрачными дескрипторами (handles) для счетчиков, которые объявляются и ведут себя как описанные ранее непрозрачные типы. Переменные, которые они объявляют, при использовании встроенных функций счетчика атомов указывают какой счетчик для доступа переменные данного типа указывают какой счетчик будет… Continue Reading

Изображения (Images)

Типы изображений являются непрозрачными типами, объявленными и ведущими себя как описанные ранее непрозрачные типы. Они могут быть дополнительно определены с помощью спецификаторов памяти. При объединении в массивы в шейдере, сэмплеры могут индексироваться только в динамически постоянных целочисленных выражениях, в противном случае результат… Continue Reading

Сэмплеры (Samplers)

Типы сэмплеров (например sampler2D) являются непрозрачными типами, объявленными и ведущими себя как описанные ранее непрозрачные типы. При объединении в массивы в шейдере, сэмплеры могут индексироваться только в динамически постоянных целочисленных выражениях, в противном случае результат не определен. Сэмплерные переменные являются… Continue Reading

Непрозрачные типы (Opaque Types)

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

Матрицы (Matrices)

OpenGL Shading Language имеет встроенные типы для матриц 2х2, 2х3, 2х4, 3х2, 3х3, 3х4, 4х2, 4х3 и 4х4 для чисел с плавающей точкой. Типы матриц начинающиеся с «mat» имеют компоненты одинарной точности, Типы матриц начинающиеся с «dmat» имеют компоненты двойной точности.… Continue Reading

Вектора (Vectors)

OpenGL Shading Language включает типы данных для 2-х, 3-х, и 4-х компонентных векторов, состоящих из переменных с плавающей точкой, целочисленных и булевых. Вектора из переменных с плавающей точкой могут использоваться для хранения цветов, нормалей, позиций, координат текстур, результатов поиска текстуры… Continue Reading

Переменные с плавающей запятой (Floating-Point Variables)

(*Примечание. По русски мы привыкли говорить «С плавающей запятой», но более верный дословный перевод «С плавающей точкой», ну и в коде пишется именно Точка, потому будет использоваться исключительно второй вариант) В различных скалярных расчетах доступны переменные с плавающей точкой как… Continue Reading

Целочисленные (Integers)

Знаковые и без знаковые целочисленные переменные поддерживаются полностью. В данном документе термин целочисленное (integer) подразумевает оба варианта, знаковый и без знаковый. Без знаковые целочисленные имеют точность ровно 32 бита. Знаковые целочисленные используют 32 бита, включая знаковый бит, в видео поразрядного дополнения (дополнительного… Continue Reading