Шейдеры в Godot Engine и подробное описание встроенных функций|Часть первая.

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

Radians

Radians в шейдерах преобразует угол из градусов в радианы. Функция принимает значение угла в градусах в качестве аргумента `degrees` типа `vec_type` (где `vec_type` может быть `float` или `vec2`, `vec3`, `vec4`, в зависимости от векторного типа шейдера).
uniform float degrees;
void fragment() {
    vec2 uv = SCREEN_UV;
    // Преобразование угла из градусов в радианы
    float radians_angle = radians(degrees);
    // Дальнейшая обработка шейдера с использованием преобразованного угла
}
В данном примере `degrees` - это значение угла в градусах, которое будет преобразовано в радианы с помощью функции `radians`. Преобразованный угол `radians_angle` может быть далее использован для дополнительной обработки шейдера, например, для расчетов поворота или других геометрических операций.

Degrees

Функция шейдеров degrees `vec_type degrees(vec_type radians)`, которая преобразует угол из радианов в градусы:
shader_type canvas_item;
uniform float angle;
void fragment() {
    // Преобразование угла из радианов в градусы
    float degrees_angle = degrees(angle);
    // Использование преобразованного угла в шейдере
    // ... (дальнейший код шейдера)
}

Sin и Cos

Функции vec_type sin (vec_type x)vec_type cos (vec_type x) в шейдере Godot используются для вычисления синуса и косинуса угла. Обе функции принимают значение угла в радианах и возвращают соответствующие значения синуса и косинуса.Например, представим, что у нас есть переменная "angle", содержащая угол в радианах. Мы можем использовать функции sin и cos в шейдере Godot следующим образом:shader_type canvas_item;void fragment(){ float angle = 1.0; // угол в радианах float sinValue = sin(angle); float cosValue = cos(angle); // Используем sinValue и cosValue для дополнительных вычислений или применения на отображение // например, можно использовать sinValue и cosValue для анимации или трансформации объектов}В данном примере мы создаем фрагментный шейдер, где определяем переменную "angle" равную 1.0 (в радианах). Затем мы вычисляем значения синуса и косинуса этого угла с помощью функций sin и cos соответственно. Мы можем использовать эти значения для дополнительных вычислений или применения к отображению, например, для анимации или трансформации объектов.
Возвращаемое значение функций синуса (sin) и косинуса (cos) зависит от угла, переданного в эти функции. Синус и косинус - это тригонометрические функции, которые представляют соответствующие отношения между сторонами и углами в прямоугольном треугольнике.
Значение sin и cos угла зависит от величины самого угла в радианах. Однако, для удобства работы с углами, мы часто используем градусы. В таком случае, значение угла должно быть преобразовано в радианы, чтобы использовать его в функциях sin и cos. Например, если передать значение угла 30 градусов в функцию sin, то будет возвращено значение, соответствующее синусу 30 градусов.
Возвращаемое значение sin и cos всегда находится в диапазоне от -1 до 1. Значение sin представляет вертикальную компоненту, а значение cos - горизонтальную компоненту для данного угла.
Также функцию sin() и cos() используют для ограничения значения от -1.0 до 1.0, например для создания пульсирующих или колеблющихся эффектов или плавного изменения цветов в шейдере.
Вот простой пример использования функции `sin(time)`:
shader_type spatial;
void fragment() {
    // Получение значения синуса текущего времени
    // и использование его как изменение значения цвета пикселя
    float r = sin(TIME)*0.1;
    float g = sin(TIME)*0.2;
    float b = sin(TIME)*0.3;
    vec3 color = vec3(r, g, b);
    // Окрашиваем пиксель с использованием полученного цвета в зависимости от значения времени
    ALBEDO = color;
}
В этом примере в функцию sin попадает значение времени в формате Unix Timestamp, его число выглядит примерно так "1699502184, и его значение каждую секунду увеличивается с января 1970 года, это общепринятый стандарт. С увеличением этого числа функция sin возвращает все большее и большее значение до пикового значения равного 1.0, как только оно доходит до этого значения, возвращаемое значение функции sin начинает уменьшаться и так до значения -1.0. Если представить функцию синус в виде графика, то выглядеть она будет так:
Увеличить Изображение
Шейдеры в Godot Engine и подробное описание встроенных функций|Часть первая.

Tan

Функция vec_type tan (vec_type x) в шейдерах Godot выполняет тангенс-операцию над входным вектором `x`. Она возвращает новый вектор, где каждая компонента вычисляется путем применения тангенса к соответствующей компоненте входного вектора.
Пример кода, демонстрирующий использование функции `tan` в шейдере на языке шейдеров Godot (поддерживается как в VisualScript, так и в ShaderScript):
shader_type canvas_item;
void fragment() {
    vec2 uv = SCREEN_PIXEL_SIZE * SCREEN_UV; // получаем координаты пикселя экрана
    // Применяем операцию тангенса к каждой компоненте вектора uv
    vec2 result = tan(uv);
    // Делаем что-то с полученным результатом...
    // Например, используем его в качестве цвета пикселя
    COLOR = vec4(result, 0.0, 1.0);
}
В данном примере мы используем функцию `tan` для вычисления тангенса каждой компоненты координаты пикселя экрана. Затем результат используется для установки цвета пикселя. Обратите внимание, что в данном примере мы применяем функцию `tan` к `vec2`, но можно использовать ее и для `vec3`, `vec4` или любого другого типа `vec_type` с соответствующей размерностью.
В процессе...
Теги:шейдеры в godot engine и подробное описание встроенных функций|часть первая.,true

Комментариев больше нет

Осталось символов: 2048