ShaderUniforms
Изменяемая коллекция именованных параметров шейдера (float, int, векторы, цвета), передаваемых в GPU-программы.
Обзор и порядок добавления
ShaderUniforms хранит именованные параметры (uniforms) для шейдерных команд отрисовки.
- Сохранение порядка: Бэкенд обходит uniforms в порядке добавления, что упрощает диагностику и ускоряет загрузку на GPU.
- Защитное копирование: Значения копируются при записи, позволяя переиспользовать временные объекты цвета или векторов.
- Удобный fluent API: Прямые методы для
float,int,vec2,vec3,vec4,ColorViewи ARGB-чисел.
Поддерживаемые типы Uniforms
| Тип | Метод записи | GLSL эквивалент |
|---|---|---|
| loat | setFloat(name, val) | uniform float name; |
| int | setInt(name, val) | uniform int name; |
| ec2 | setVec2(name, x, y) | uniform vec2 name; |
| ec3 | setVec3(name, x, y, z) | uniform vec3 name; |
| ec4 | setVec4(name, x, y, z, w) | uniform vec4 name; |
| ColorView | setColor(name, color) | uniform vec4 name; (RGBA нормализованный 0..1) |
Заполнение параметров шейдера
ShaderUniforms uniforms = ShaderUniforms.create()
.setVec2("u_resolution", width, height)
.setFloat("u_time", (System.currentTimeMillis() % 10000) / 1000.0f)
.setColor("u_tint", ColorView.rgb(0, 180, 255));
scope.shader(waterShader, x, y, width, height, uniforms, ShaderDrawOptions.defaults());
API
Фабричные методы
| Метод | Описание |
|---|---|
empty() |
Возвращает новый пустой набор ShaderUniforms. |
create() |
Возвращает новый изменяемый набор ShaderUniforms. |
clear() |
Очищает все записанные параметры без создания новой коллекции. |
copy() |
Создаёт точную независимую копию этой коллекции параметров. |
copyFrom(ShaderUniforms) |
Копирует параметры из другой коллекции без создания новых объектов. |
ShaderUniforms::empty()
Создать пустой набор
Возвращает новый пустой набор ShaderUniforms.
Возвращает ShaderUniforms: Пустой экземпляр ShaderUniforms..
ShaderUniforms::create()
Создать набор
Возвращает новый изменяемый набор ShaderUniforms.
Возвращает ShaderUniforms: Новый экземпляр ShaderUniforms..
ShaderUniforms::clear()
Очистить параметры
Очищает все записанные параметры без создания новой коллекции.
Возвращает ShaderUniforms: Текущая коллекция для цепочечного вызова..
ShaderUniforms::copy()
Копировать коллекцию
Создаёт точную независимую копию этой коллекции параметров.
Возвращает ShaderUniforms: Новая копия ShaderUniforms..
ShaderUniforms::copyFrom(ShaderUniforms)
Скопировать из другой коллекции
Копирует параметры из другой коллекции без создания новых объектов.
| Параметр | Тип | Описание |
|---|---|---|
source |
ShaderUniforms |
Исходная коллекция параметров или null для очистки. |
Возвращает ShaderUniforms: Текущая коллекция для цепочечного вызова..
Запись параметров (Setters)
| Метод | Описание |
|---|---|
set(String, ShaderUniform) |
Сохраняет значение ShaderUniform под указанным именем. |
setFloat(String, float) |
Сохраняет одиночный float параметр под указанным именем. |
setInt(String, int) |
Сохраняет целочисленный int параметр под указанным именем. |
setVec2(String, float, float) |
Сохраняет двухкомпонентный вектор (x, y) под указанным именем. |
setVec3(String, float, float, float) |
Сохраняет трёхкомпонентный вектор (x, y, z) под указанным именем. |
setVec4(String, float, float, float, float) |
Сохраняет четырёхкомпонентный вектор (x, y, z, w) под указанным именем. |
setColor(String, ColorView) |
Преобразует ColorView в нормализованный vec4 (r, g, b, a) параметр. |
setColorArgb(String, int) |
Преобразует упакованное ARGB-число в нормализованный vec4 параметр. |
setMat4(String, float[]) |
Сохраняет матрицу 4x4 из массива 16 float-значений. |
ShaderUniforms::set(String, ShaderUniform)
Записать ShaderUniform
Сохраняет значение ShaderUniform под указанным именем.
| Параметр | Тип | Описание |
|---|---|---|
name |
String |
Имя параметра uniform в коде шейдера. |
uniform |
ShaderUniform |
Объект ShaderUniform с данными параметра. |
Возвращает ShaderUniforms: Текущая коллекция для цепочечного вызова..
ShaderUniforms::setFloat(String, float)
Записать float
Сохраняет одиночный float параметр под указанным именем.
| Параметр | Тип | Описание |
|---|---|---|
name |
String |
Имя параметра uniform в коде шейдера. |
value |
float |
Примитивное значение типа float или int. |
Возвращает ShaderUniforms: Текущая коллекция для цепочечного вызова..
ShaderUniforms::setInt(String, int)
Записать int
Сохраняет целочисленный int параметр под указанным именем.
| Параметр | Тип | Описание |
|---|---|---|
name |
String |
Имя параметра uniform в коде шейдера. |
value |
int |
Примитивное значение типа float или int. |
Возвращает ShaderUniforms: Текущая коллекция для цепочечного вызова..
ShaderUniforms::setVec2(String, float, float)
Записать vec2
Сохраняет двухкомпонентный вектор (x, y) под указанным именем.
| Параметр | Тип | Описание |
|---|---|---|
name |
String |
Имя параметра uniform в коде шейдера. |
x |
float |
Первая координата вектора (X). |
y |
float |
Вторая координата вектора (Y). |
Возвращает ShaderUniforms: Текущая коллекция для цепочечного вызова..
ShaderUniforms::setVec3(String, float, float, float)
Записать vec3
Сохраняет трёхкомпонентный вектор (x, y, z) под указанным именем.
| Параметр | Тип | Описание |
|---|---|---|
name |
String |
Имя параметра uniform в коде шейдера. |
x |
float |
Первая координата вектора (X). |
y |
float |
Вторая координата вектора (Y). |
z |
float |
Третья координата вектора (Z). |
Возвращает ShaderUniforms: Текущая коллекция для цепочечного вызова..
ShaderUniforms::setVec4(String, float, float, float, float)
Записать vec4
Сохраняет четырёхкомпонентный вектор (x, y, z, w) под указанным именем.
| Параметр | Тип | Описание |
|---|---|---|
name |
String |
Имя параметра uniform в коде шейдера. |
x |
float |
Первая координата вектора (X). |
y |
float |
Вторая координата вектора (Y). |
z |
float |
Третья координата вектора (Z). |
w |
float |
Четвёртая координата вектора (W). |
Возвращает ShaderUniforms: Текущая коллекция для цепочечного вызова..
ShaderUniforms::setColor(String, ColorView)
Записать цвет ColorView
Преобразует ColorView в нормализованный vec4 (r, g, b, a) параметр.
| Параметр | Тип | Описание |
|---|---|---|
name |
String |
Имя параметра uniform в коде шейдера. |
color |
ColorView |
Источник ColorView для RGBA-параметра. |
Возвращает ShaderUniforms: Текущая коллекция для цепочечного вызова..
ShaderUniforms::setColorArgb(String, int)
Записать ARGB цвет
Преобразует упакованное ARGB-число в нормализованный vec4 параметр.
| Параметр | Тип | Описание |
|---|---|---|
name |
String |
Имя параметра uniform в коде шейдера. |
argb |
int |
Упакованное 32-битное число в формате ARGB. |
Возвращает ShaderUniforms: Текущая коллекция для цепочечного вызова..
ShaderUniforms::setMat4(String, float[])
Записать матрицу mat4
Сохраняет матрицу 4x4 из массива 16 float-значений.
| Параметр | Тип | Описание |
|---|---|---|
name |
String |
Имя параметра uniform в коде шейдера. |
values |
float[] |
Массив ровно из 16 значений float для матрицы. |
Возвращает ShaderUniforms: Текущая коллекция для цепочечного вызова..
Чтение и проверка параметров
| Метод | Описание |
|---|---|
values() |
Возвращает неизменяемую карту всех зарегистрированных параметров. |
isEmpty() |
Возвращает true, если в наборе нет параметров. |
ShaderUniforms::values()
Получить карту параметров
Возвращает неизменяемую карту всех зарегистрированных параметров.
Возвращает Map: Неизменяемая карта Map параметров..
ShaderUniforms::isEmpty()
Проверить пустоту
Возвращает true, если в наборе нет параметров.
Возвращает boolean: True, если коллекция пуста..