reckfellENGINE

Оформление шейдеров: читаемость и безопасное редактирование

Законченный пример, порядок, имена и отличия форматирования от изменения поведения.

На этой странице

Единое оформление помогает быстро найти входы шейдера, работу этапов и проверку границ. Сам стиль не меняет выполнение; порядок объявлений, имена и hints менять поведение могут.

Полный пример

Сохраните как StyledReveal.reckfellshader и назначьте через ShaderMaterial видимому ColorRect:

Шейдер
shader_type canvas_item;
render_mode unshaded;

uniform vec4 tint : source_color = vec4(1.0);
uniform float reveal_amount : hint_range(0.0, 1.0) = 1.0;

void fragment() {
    float boundary = clamp(reveal_amount, 0.0, 1.0);
    if (UV.x > boundary) {
        discard;
    }
    COLOR = tint;
}

По умолчанию видна полная белая карточка. При reveal_amount=0.5 остаётся левая половина, tint=red меняет её цвет. Граница ограничивается явно: hint_range настраивает только Inspector. Отрицательные/превышающие единицу значения и видимый результат проверены.

Порядок и имена

Сначала shader_type/render_mode, затем include/константы, связанные группы uniform, varying/struct, помощники перед вызывающими их функциями и функции этапов. Локальные переменные объявляйте рядом с первым использованием и инициализируйте до чтения.

Для функций, параметров и uniform используйте понятные snake_case, для констант и макросов — UPPER_CASE. При необходимости отражайте единицы/пространство: time_seconds, uv_offset, viewport_size. Переименование uniform требует обновить setter в C#, сохранённые значения материалов и остальных потребителей: это изменение API, а не форматирование.

Используйте xy/xyz для геометрии, rgb/rgba для цвета; не меняйте семейства без причины. Аргументы макросов заключайте в скобки, а обычные повторяемые вычисления выносите в типизированные функции.

Раскладка текста

  • UTF-8 без BOM, переводы строк LF, один завершающий перевод строки.
  • Один способ отступов на проект; в примерах четыре пробела. Не смешивайте табуляцию и пробелы в одном файле.
  • Один оператор на строку, фигурные скобки у управляющих блоков, пробелы вокруг бинарных операторов.
  • Пустые строки между группами входов и функциями; длинные выражения переносите по смысловым операторам или аргументам.
  • Явные вещественные литералы вроде 0.5; различайте целые/вещественные типы при выборе перегрузок.
  • Комментарий объясняет координаты, владение, нетривиальную формулу или измеренное ограничение. Удаляйте пересказ следующей строки.

Проверяйте изменения по смыслу

После автоформатирования просмотрите diff. Универсальный форматтер C/C++ может не понимать shader_type, hints или препроцессор. Сохраняйте директивы и продолжающие строку обратные косые черты. Не скрывайте за форматированием другой blend mode, присваивание альфа, source_color или переименование публичного uniform: это изменения поведения.

После изменения семантики проверьте компиляцию и показательный результат рендеринга. Clamp, discard и tint этого примера проверены на GPU; статья не предполагает наличие конкретного меню редактора или интеграции форматтера.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.