Динамические постоянные выражения и Единый поток управления

Некоторые операции требуют, что бы выражение было динамически постоянным (dynamically uniform), или что бы находилось в единый поток управления (uniform control flow) (uniform – единый, постоянный, однообразный). Эти требования определяются следующим набором определений. Invocation (Вызов) является единственным способом выполнить main() для конкретного этапа, работающий только с набором… Continue Reading

Ключевые слова

Ниже приведены ключевые слова (keywords) языка и (после предварительной обработки) они могут быть использованы только так, как описано в этой спецификации, или произойдет ошибка времени компиляции: attribute    const    uniform    varying    buffer    shared coherent    volatile… Continue Reading

Комментарии

Комментарии отделяются символами /* и */, или // и до новой линии, по привычной схеме (*Примечание: все три элемента — /* и */, или // — в оригинале называются delimiters  – ограничителями (дословно разделитель), в дальнейшем будет использоваться это слово). Ограничитель начала… Continue Reading

Препроцессор

Имеется препроцессор, который обрабатывает исходные строки как часть процесса компиляции. За исключением случаев, указанных ниже, они ведут себя как стандартный препроцессор С++ (раздел 10 «Нормативные ссылки»). Полный список директив препроцессора выглядит следующим образом. # #define #undef #if #ifdef #ifndef #else… Continue Reading

Исходные строки

*Примечание: Предыдущая части перевода подверглись переделки, суть которой Вы сможете увидеть в начале предыдущей статьи. Источник одного шейдера представляет собой массив строк (strings) символов из набора символов. Шейдер строится из связи этих строк. Каждая строка (string) может содержать несколько линий… Continue Reading

Геометрический процессор

Геометрический процессор (geometry processor) является программируемым элементом, занимается сборкой (монтированием, assembled) примитивов после обработки вершин, и выводит последовательность вершин, образующих выходные примитивы. Единицы компиляции, написанные на  для запуска на данном процессоре, называются геометрическими шейдерами (geometry shaders). Результатом успешной компиляции и компоновки набора геометрических… Continue Reading

The OpenGL® Shading Language. Introduction

Language Version: 4.50 Document Revision: 6 14-Apr-2016 Оригинал тут. Этот документ определяет только версию 4.50 Языка Шейдеров OpenGL (OpenGL Shading Language). Это потребует заменить __VERSION__ на 450, и #version только 450. Если #version использует меньшее значение, будет применяться предыдущий язык шейдеров, который будет поддерживаться… Continue Reading

Ищем книгу, перевожу спецификацию

Opengl Programming Guide 9th edition по альтернативной лицензии найти не удалось. Лично мне книга нужна не настолько сильно, что бы покупать, но если у кого есть – можете предоставить для перевода. Т.к. 8-е издание устарело (4 года уже), то заниматься им… Continue Reading

Constructors

GLSL более рьяно относится к безопасности типом, чем С++, и имеет меньшее число неявных преобразований значений. К примеру, int f = false; приведет к ошибке компиляции из-за присвоения логического значения целочисленной переменной. Типы будут неявно преобразованы в соответствии с таблицей… Continue Reading

Variable Initialization

Переменные могут быть инициализированы во время определения: int i, numParticles = 1500; float force, g = −9.8; bool falling = true; double pi = 3.1415926535897932384626LF; Целочисленные константы могут быть выражены как восьмеричное, десятеричное или шестнадцатеричное значение. Не обязательный минус имеет привычное… Continue Reading