Базовые типы GLSL

OpenGL Shading Language поддерживает следующие базовые типы данных, разделим их на группы:

Очевидные типы:

Тип Описание
void для функция, не возвращающих значения
bool тип условного выражения, принимающий значения true или false
int знаковое целочисленное
uint беззнаковое целочисленное
float скаляр с плавающей запятой с одинарной точностью
double скаляр с плавающей запятой двойной точности
vec2 двухкомпонентный вектор одинарной точности с плавающей запятой
vec3 трехкомпонентный вектор одинарной точности с плавающей запятой
vec4 четырехкомпонентный вектор с плавающей запятой одинарной точности
dvec2 двухкомпонентный вектор с плавающей запятой двойной точности
dvec3 трехкомпонентный вектор с плавающей запятой двойной точности
dvec4 четырехкомпонентный вектор с плавающей запятой двойной точности
bvec2 двухкомпонентный булев вектор
bvec3 трехкомпонентный булев вектор
bvec4 четырехкомпонентный булев вектор
ivec2 двухкомпонентный знаковый целочисленный вектор
ivec3 трехкомпонентный знаковый целочисленный вектор
ivec4 четырехкомпонентный знаковый целочисленный вектор
uvec2 двухкомпонентный беззнаковый целочисленный вектор
uvec3 трехкомпонентный беззнаковый целочисленный вектор
uvec4 четырехкомпонентный беззнаковый целочисленный вектор
mat2 2 × 2 матрица одинарной точности с плавающей запятой
mat3 3 × 3 матрица одинарной точности с плавающей запятой
mat4 4 × 4 матрица одинарной точности с плавающей запятой
mat2x2 аналогично mat2
mat2x3 матрица с плавающей запятой одинарной точности с 2 столбцами и 3 строками
mat2x4 матрица с плавающей запятой одинарной точности с 2 столбцами и 4 строками
mat3x2 матрица с плавающей запятой одинарной точности с 3 столбцами и 2 строками
mat3x3 аналогично mat3
mat3x4 матрица с плавающей запятой одинарной точности с 3 столбцами и 4 строками
mat4x2 матрица с плавающей запятой одинарной точности с 4 столбцами и 2 строками
mat4x3 матрица с плавающей запятой одинарной точности с 4 столбцами и 3 строками
mat4x4 аналогично mat4
dmat2 2 × 2 матрица с плавающей запятой двойной точности
dmat3 3 × 3 матрица с плавающей запятой двойной точности
dmat4 4 × 4 матрица с плавающей запятой двойной точности
dmat2x2 аналогично dmat2
dmat2x3 матрица с плавающей запятой двойной точности с 2 столбцами и 3 строками
dmat2x4 матрица с плавающей запятой двойной точности с 2 столбцами и 4 строками
dmat3x2 матрица с плавающей запятой двойной точности с 3 столбцами и 2 строками
dmat3x3 аналогично dmat3
dmat3x4 матрица с плавающей запятой двойной точности с 3 столбцами и 4 строками
dmat4x2 матрица с плавающей запятой двойной точности с 4 столбцами и 2 строками
dmat4x3 матрица с плавающей запятой двойной точности с 4 столбцами и 3 строками
dmat4x4 аналогично dmat4

Не очевидные типы с плавающей запятой:

Тип Описание
sampler1D
image1D
Дескриптор (handle) для доступа к 1D текстуре
sampler2D
image2D
Дескриптор (handle) для доступа к 2D текстуре
sampler3D
image3D
Дескриптор (handle) для доступа к 3D текстуре
samplerCube
imageCube
Дескриптор (handle) для доступа к кубической текстуре (cube mapped texture, Примечание*: более правильным, возможно, был бы перевод «размеченной под куб текстуре», но для сокращения и уменьшения путаницы в дальнейшем будет использоваться «кубическая текстура». Если не понятно что это, просто введите в гугл картинках «cube mapped texture», сюда картинку вставлять не хочется по, думаю, понятным причинам)
sampler2DRect
image2DRect
Дескриптор (handle) для доступа к текстуре прямоугольника (Примечание*: Rectangle Texture — это текстура, которая содержит простое 2D изображение без мипмаппинга. Описание из Khronos wiki)
sampler1DArray
image1DArray
Дескриптор (handle) для доступа к 1D «массивной» (от слова массив) текстуре (Примечание*: Array Texture — это текстура, где каждый уровень мипмаппинга содержит массив изображений одинагокого размера. Описание из Khronos wiki, так же это наглядно показано на картинках на сайте мелкомягких https://msdn.microsoft.com/ru-ru/library/windows/desktop/ff476906(v=vs.85).aspx)
sampler2DArray
image2DArray
Дескриптор (handle) для доступа к 2D «массивной» (от слова массив) текстуре.
samplerBuffer
imageBuffer
Дескриптор (handle) для доступа к буферной текстуре (Buffer Texture. Примечание*: Buffer Texture — это одномерная текстура, память которой происходит от объекта буфера. Они используются, что бы обеспечить шейдеру доступ к большой таблице памяти, которая управляется объектом буфера)
sampler2DMS
image2DMS
Дескриптор (handle) для доступа к 2D multi-sample текстуре (Примечание*: multi-sample texture — это текстура, которая может иметь несколько сэмплеров на пиксель, что позволяет использовать их в качестве цели для multisample рендеринга, попросту сглаживания, но так же могут использоваться как источники данных для шейдера)
sampler2DMSArray
image2DMSArray
Дескриптор (handle) для доступа к 2D «массивной» multi-sample текстуре
samplerCubeArray
imageCubeArray
Дескриптор (handle) для доступа к «массивной» кубической текстуре
sampler1DShadow Дескриптор (handle) для доступа к 1D текстуре глубины со сравнением
sampler2DShadow Дескриптор (handle) для доступа к 2D текстуре глубины со сравнением
sampler2DRectShadow Дескриптор (handle) для доступа к текстуре прямоугольника со сравнением
sampler1DArrayShadow Дескриптор (handle) для доступа к 1D «массивной» текстуре глубины со сравнением
sampler2DArrayShadow Дескриптор (handle) для доступа к 2D «массивной» текстуре глубины со сравнением
samplerCubeShadow Дескриптор (handle) для доступа к кубической текстуре глубины со сравнением
samplerCubeArrayShadow Дескриптор (handle) для доступа к кубической «массивной» текстуре глубины со сравнением

Не очевидные типы со знаковыми целочисленными:

Тип Описание
isampler1D
iimage1D
Дескриптор (handle) для доступа к целочисленной 1D текстуре
isampler2D
iimage2D
Дескриптор (handle) для доступа к целочисленной 2D текстуре
isampler3D
iimage3D
Дескриптор (handle) для доступа к целочисленной 3D текстуре
isamplerCube
iimageCube
Дескриптор (handle) для доступа к целочисленной кубической текстуре
isampler2DRect
iimage2DRect
Дескриптор (handle) для доступа к целочисленной 2D текстуре прямоугольника
isampler1DArray
iimage1DArray
Дескриптор (handle) для доступа к целочисленной 1D «массивной» текстуре
isampler2DArray
iimage2DArray
Дескриптор (handle) для доступа к целочисленной 2D «массивной» текстуре
isamplerBuffer
iimageBuffer
Дескриптор (handle) для доступа к целочисленной буферной текстуре
isampler2DMS
iimage2DMS
Дескриптор (handle) для доступа к целочисленной 2D multi-sample текстуре
isampler2DMSArray
iimage2DMSArray
Дескриптор (handle) для доступа к целочисленной 2D «массивной» multi-sample текстуре
isamplerCubeArray
iimageCubeArray
Дескриптор (handle) для доступа к целочисленной кубической «массивной» текстуре

Не очевидные типы с беззнаковыми целочисленными:

Тип Описание
atomic_uint Дескриптор (handle) для доступа к беззнаковому целочисленному атомарному счетчку
usampler1D
uimage1D
Дескриптор (handle) для доступа к беззнаковой целочисленной 1D текстуре
usampler2D
uimage2D
Дескриптор (handle) для доступа к беззнаковой целочисленной 2D текстуре
usampler3D
uimage3D
Дескриптор (handle) для доступа к беззнаковой целочисленной 3D текстуре
usamplerCube
uimageCube
Дескриптор (handle) для доступа к беззнаковой целочисленной кубической текстуре
usampler2DRect
uimage2DRect
Дескриптор (handle) для доступа к беззнаковой целочисленной текстуре прямоугольника
usampler1DArray
uimage1DArray
Дескриптор (handle) для доступа к беззнаковой целочисленной 1D «масивной» текстуре
usampler2DArray
uimage2DArray
Дескриптор (handle) для доступа к беззнаковой целочисленной 2D «масивной» текстуре
usamplerBuffer
uimageBuffer
Дескриптор (handle) для доступа к беззнаковой целочисленной буферной текстуре
usampler2DMS
uimage2DMS
Дескриптор (handle) для доступа к беззнаковой целочисленной 2D multi-sample текстуре
usampler2DMSArray
uimage2DMSArray
Дескриптор (handle) для доступа к беззнаковой целочисленной 2D multi-sample текстуре массива (Примечание*: вполне вероятно это опечатка в оригинальном документе, но в данной строке именно текстура массива, а не наоборот)
usamplerCubeArray
uimageCubeArray
Дескриптор (handle) для доступа к беззнаковой целочисленной кубической «массивной» текстуре

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

Нет указателей.

В данной спецификации совокупности (процесс или результат описанного выше объединения) будут подразумевать структуру или массив. (Матрицы и вектора не являются совокупностями.) Совокупности, матрицы и вектора в целом будут называться композитами.

Main Admin

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

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