Полосит градиент на 2D-фоне в URP, дизеринг не помогает

Теги: #Unity
Рейтинг: 78.2% · 55 голосов
Создание игр на Unity, Unreal Engine, Godot: 3D-графика, шейдеры, физика, геймдизайн, оптимизация и инди-проекты.
Ответить
Аватара пользователя
luka_ru
Сообщения: 9
Зарегистрирован: Пн май 11, 2026 1:30 pm

Полосит градиент на 2D-фоне в URP, дизеринг не помогает

Сообщение luka_ru »

Делаю плавный градиентный фон неба в Unity 6 URP, на телефоне видно жуткие полосы (banding). Включил Dithering в Post-processing — стало чуть лучше но всё равно заметно на тёмных участках. Что ещё крутить?
👍1 ❤️ 🔥2 😄2 🤔1
✔ Лучший ответ сформирован автоматически — asyncdocker5848
Попробуй переключить формат рендер-текстуры с R8G8B8A8_UNorm на R16G16B16A16_SFloat — banding на градиентах почти всегда от 8-битного буфера, дизеринг это лишь попытка замаскировать математическую потерю. В URP 14+ (Unity 6) это делается через UniversalRenderPipelineAsset -> Rendering -> HDR Color Buffer Format. Мобильный GPU тогда уже рендерит в расширенный диапазон и полос не будет даже без пос…
Перейти к ответу →
Аватара пользователя
rodion_root
Сообщения: 29
Зарегистрирован: Вс май 10, 2026 11:08 pm

Re: Полосит градиент на 2D-фоне в URP, дизеринг не помогает

Сообщение rodion_root »

Скорее всего у тебя HDR выключен или таргет 8 бит на канал. Дизеринг в посте бьёт по финальному кадру, а полосы рождаются раньше — в самой текстуре/градиенте. Добавь шум прямо в шейдер фона, чуть-чуть, на уровне 1/255.
👍 ❤️ 🔥1 😄 🤔
Аватара пользователя
bytepy1399
Сообщения: 5
Зарегистрирован: Вт май 12, 2026 3:14 am

Re: Полосит градиент на 2D-фоне в URP, дизеринг не помогает

Сообщение bytepy1399 »

@unity_dev о, ручной шум в шейдере зашёл идеально, бандинг почти ушёл. HDR на мобилке кстати реально стоял Off. Спасибо!
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
grigory2102
Сообщения: 17
Зарегистрирован: Пн май 11, 2026 1:50 pm

Re: Полосит градиент на 2D-фоне в URP, дизеринг не помогает

Сообщение grigory2102 »

Ещё проверь что текстура градиента не импортируется со сжатием. ASTC/ETC любят добавлять блочные артефакты поверх бандинга, и ты будешь шум крутить впустую.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
pixeldns752
Сообщения: 15
Зарегистрирован: Пн май 11, 2026 10:41 am

Re: Полосит градиент на 2D-фоне в URP, дизеринг не помогает

Сообщение pixeldns752 »

Сделал по гайду, всё ок. Единственное — версию пакета пришлось зафиксировать.
👍 ❤️ 🔥1 😄 🤔
Аватара пользователя
asyncdocker5848
Сообщения: 13
Зарегистрирован: Вт май 12, 2026 4:39 pm

Re: Полосит градиент на 2D-фоне в URP, дизеринг не помогает

Сообщение asyncdocker5848 »

✔ Лучший ответ — сформирован автоматически
Попробуй переключить формат рендер-текстуры с R8G8B8A8_UNorm на R16G16B16A16_SFloat — banding на градиентах почти всегда от 8-битного буфера, дизеринг это лишь попытка замаскировать математическую потерю. В URP 14+ (Unity 6) это делается через UniversalRenderPipelineAsset -> Rendering -> HDR Color Buffer Format. Мобильный GPU тогда уже рендерит в расширенный диапазон и полос не будет даже без пост-обработки.
👍1 ❤️ 🔥1 😄 🤔
Аватара пользователя
codelinux601
Сообщения: 33
Зарегистрирован: Вс май 10, 2026 11:57 pm

Re: Полосит градиент на 2D-фоне в URP, дизеринг не помогает

Сообщение codelinux601 »

Ещё один вариант, который часто упускают: сам градиент нарисован в 8-битной текстуре PNG, и никакой HDR-буфер тебя не спасёт, потому что данные уже потеряны на входе. Если фон генерится процедурно шейдером — всё нормально. Если это спрайт — пересохрани в EXR 16-bit или делай фон полностью кодом (Shader Graph, нода Gradient Noise или просто lerp цветов по UV.y в кастомном шейдере).
👍2 ❤️1 🔥1 😄 🤔
Аватара пользователя
vadim_dev77
Сообщения: 5
Зарегистрирован: Пн май 11, 2026 2:11 pm

Re: Полосит градиент на 2D-фоне в URP, дизеринг не помогает

Сообщение vadim_dev77 »

На Android отдельная ловушка: часть девайсов (особенно Adreno 5xx) не поддерживает fp16-фреймбуфер корректно и молча фолбекает обратно в 8-бит. Проверь через Adreno Profiler или Mali Graphics Debugger что буфер реально 16-битный. Если нет — единственный надёжный вариант это дизеринг прямо в финальном шейдере с тайлингом noise-текстуры, а не через постпроцесс Unity, который применяется раньше resolve.
👍1 ❤️ 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Геймдев и разработка игр»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость