Изменение применено к основной спеке photos: эффекты, виньетка, зерно, живой предпросмотр, свёрнутые секции панели и редактирование из просмотрщика. Change перемещён в archive.
5.6 KiB
5.6 KiB
Proposal
Why
В неразрушающем редакторе Galo сейчас есть только блоки «Свет» и «Цвет»: экспозиция, тональная кривая, баланс белого, микшер и цветокоррекция. Не хватает эффектов, которые в Lightroom собраны в панели «Эффекты»: текстура, чёткость, удаление дымки, виньетка и зерно. Это последний крупный блок базовой обработки, после которого веб-редактор покрывает привычный набор Lightroom.
What Changes
- Добавить в
EditParamsблокEffects:- Текстура — локальный контраст высоких частот (unsharp mask по яркости).
- Чёткость — локальный контраст средних частот с защитой от ореолов.
- Убрать дымку — оценка дымки (dark channel prior) и возврат контраста и насыщенности.
- Виньетка — три режима, как в макете: «Свет», «Цвет», «Закарасить» (заливка). Параметры: сила, средняя точка, растушёвка, округлость, света; для цветных режимов — цвет виньетки.
- Зерно — сила, размер, шероховатость; шум детерминирован для повторных рендеров.
- Сервер (Go): применять эффекты после света и цвета при рендере редактированной
версии; результат по-прежнему пишется в роли
edit,edit_thumb,edit_medium,edit_preview, оригинал не меняется. - Клиент (Svelte/TS): раздел «Эффекты» в панели правок с вкладками виньетки; живой предпросмотр эффектов в просмотрщике до готовности серверного рендера.
- Панель правок: все секции инструментов по умолчанию свёрнуты, состояние
каждой секции сохраняется в браузере (
localStorage). - Вкладка «Редактирование» доступна только в просмотрщике: в режиме сетки правая панель показывает только «Сведения».
- WebGL2-превью: перейти с одного прохода на многопроходную схему (FBO, разделимое размытие, карта дымки) для пространственных эффектов.
- Обратная совместимость:
edit_paramsостаётся JSON-блобом, фото без ключаeffectsрендерятся как раньше; миграции схемы БД не требуется. - Android-клиент не меняется: он показывает уже отрендеренные версии.
Capabilities
New Capabilities
Нет — эффекты входят в существующую способность photos.
Modified Capabilities
photos: требование «Неразрушающее редактирование фотографии» расширяется параметрами эффектов; добавляются требования к виньетке, зерну, пространственным эффектам и их живому предпросмотру.
Impact
backend/internal/photos/edit.go— модельEffectsParams, нормализация,IsEmpty, сериализация.backend/internal/photos/handlers.go— приём блокаeffectsвPATCH /photos/:id/edit(у обработчика собственный request-структ).backend/internal/photos/edit_render.go— порядок проходов рендера и новые эффекты; вероятно отдельный файл с пространственными операциями (blur, dark channel, виньетка, зерно).frontend/src/lib/edit.ts— типы, дефолты, нормализация, CPU-реализация попиксельных эффектов (виньетка, зерно) для фолбэка.frontend/src/lib/webgl-preview.ts,Viewer.svelte— многопроходный предпросмотр эффектов.frontend/src/lib/components/PhotoEditPanel.svelte— раздел «Эффекты», вкладки виньетки, цвет виньетки; свёрнутые по умолчанию секции;EditSlider.svelteпереиспользуется.frontend/src/lib/editor-sections.ts— состояние сворачивания секций вlocalStorageи его нормализация.frontend/src/lib/components/PhotoPanel.svelte— вкладка «Редактирование» только при открытом просмотрщике.- Тесты:
edit_test.go,edit.test.ts, новый e2e-сценарий правки с эффектами, бенчмарк пространственных проходов; проверка компиляции GL-шейдеров. - Миграции БД и Android-клиент не затрагиваются.