Является ли белый цвет лучшим базовым цветом для начала при планировании затенения спрайтов в Unity?

10

Я изучаю создание прототипа игры в Unity, которая будет состоять из сплошных квадратных спрайтов / тайлов. Я полагаю, что могу представлять разные типы объектов с разными цветами для каждой плитки в игре.

Я полагаю, что могу импортировать один квадратный спрайт и соответствующим образом закрасить его в Unity, в отличие от импортированных квадратов разных цветов.

Мой опыт с настройкой оттенка и насыщенности в Photoshop показывает, что белый цвет изменить нелегко, поскольку белые вещи часто остаются белыми. Мои тесты в Unity показывают, что я могу изменить «цвет» спрайта на что угодно, кроме белого, и спрайт, по-видимому, соответствующим образом затенен, несмотря на то, что я мог бы подумать, учитывая мой опыт работы с Photoshop.

Поскольку белые объекты, кажется, приобретают соответствующий оттенок цвета при изменении в Unity, моя интуиция говорит мне, что это лучший базовый цвет для начала, а это означает, что я могу импортировать один белый квадратный спрайт и просто настроить цвет для представления различных объектов. и состояния объекта.

Является ли белый спрайт лучшим цветным спрайтом для начала и почему что-то подобное работает в Unity, а не регулирует оттенок и насыщенность в Photoshop?

введите описание изображения здесь

SpartanDonut
источник
Сначала определите «лучший».
Krythic

Ответы:

13

Белый - лучший базовый цвет для истинного представления. Кроме того, сохранение оттенков серого в спрайте позволяет легко настраивать цвета для команд и т. Д.

Unity применяет Multiplyрежим смешивания к текстуре и цвету спрайта.

Тип цвета Unity варьируется от 0 до 1 включительно.

Color.White равен (1, 1, 1, 1).

Зная, что 1раз все само по себе.

Если оттенки серого textureсмешаны с Colorполем Sprite Renderer , каждый пиксель сам по себе. Изменение этого поля будет просто умножить каждое однородное значение оттенков серого на каждый компонент цвета.

Тонировка какой-то спрайт


Вы можете играть в режиме смешивания Multiply в вашем любимом графическом редакторе, таком как Photoshop или GIMP.

Настройка Photoshop

MLM
источник
4

Sprites-Additive.shader - GitHub Gist

Цвета Unity имеют 4 значения с плавающей запятой, типичные для многих цветовых форматов RGBA, соответствующие индивидуальным процентным значениям цвета Красный, Зеленый, Синий и Альфа-канал прозрачности.

Также, как упомянуто выше, «Оттенок» по умолчанию, применяемый Unity, является мультипликативным шейдером. Photoshop называет этот эффект «Умножение», и процесс буквально умножает значения цвета в пикселях вашего спрайта на выбранное значение цвета.

Проблема в том, что математический шейдер Multiplicative color ВСЕГДА будет производить одинаковый оттенок (если вы «умножаете» на белый) или более темный цвет, если вы умножаете на что-либо еще. Я столкнулся с ситуацией, когда я хотел получить совершенно противоположный эффект в ситуации с кузнечным делом. Нагретый металл не должен умножаться на желтый, чтобы получить более темный оттенок:

мультипликативный шейдер от Yellow

Вместо этого я переписал мультипликативный шейдер Unity по умолчанию, чтобы он был аддитивным. Результаты были больше похожи на то, что я искал:

аддитивный шейдер

Я предоставлю суть переписанному Sprites-Additive.shader, если кому-то будет интересно.

Вот хороший справочник по цветовой терминологии и модам: http://www.northlite.net/ps/blend.htm

Джо
источник
Пользователь, у которого недостаточно репутации, чтобы комментировать, проявил интерес к просмотру кода шейдера для этого эффекта. У вас все еще есть возможность поделиться?
DMGregory
1
Эй, сейчас у меня его нет в наличии, но я выкопаю его и получу ссылку, как только смогу. Сегодня вечером, если это возможно.
Джо
2
Я забрал это, я нашел это относительно легко и добавил его в Gist на моем GitHub. Главное отличие между аддитивным и мультипликативным шейдерами - это прозрачность. В аддитивном шейдере я установил 10% прозрачности, чтобы поддерживать относительную альфа пикселей с низкими значениями альфа. Вам не нужно беспокоиться о подобных вещах в мультипликативном шейдере из-за природы этой математики.
Джо