Введение в линейное цветовое пространство в Unity
Работа в линейном цветовом пространстве дает более точное отображение, чем работа в гамма-цветовом пространстве.
Вы можете работать в линейном цветовом пространстве, если текстуры были созданы в линейном или гамма цветовом пространстве. Гамма цветового пространства Входы текстур в линейное цветовое пространство программы Shader поставляются в Shader с удаленной гамма-коррекцией.
Информацию о том, как установить цветовое пространство проекта, см. в Установка цветового пространства проекта.
Примечание: Окно Предварительный просмотр текстуры в Настройки импорта текстуры отображает текстуры с использованием гамма-смешивания, даже если вы работаете в линейном цветовом пространстве.
Линейные текстуры
Выбор Цветовое пространство: Линейный предполагает, что текстуры находятся в гамма цветовом пространстве. Unity использует ваш GPU’s sRGB Если текстуры созданы в линейном цветовом пространстве, то необходимо обойти этот параметр, так как он может привести к неправильному отображению текстуры. sRGB Для получения более подробной информации см. Отключить sRGB выборка для текстуры.
Гамма-текстуры
Переход от гамма цветового пространства к линейному цветовому пространству требует некоторых настроек. Более подробную информацию см. в Гамма текстуры в линейном цветовом пространстве.
Преобразование гамма в линейное
Для цветов это преобразование применяется косвенно, поскольку Unity Editor уже преобразует значения в числа с плавающей точкой, прежде чем передать их GPU в качестве констант. При выборке Текстур GPU автоматически удаляет гамма-коррекцию, преобразуя результат в линейное пространство.
Эти входные данные затем передаются в Shader, при этом расчеты освещенности происходят в линейном пространстве, как обычно. При записи полученного значения в framebuffer, оно либо сразу корректируется гамма-коррекцией, либо остается в линейном пространстве для последующей гамма-коррекции — это зависит от текущей конфигурации рендеринга. Например, в высоком динамическом диапазоне (HDR) результаты рендеринга остаются в линейном пространстве и корректируются гамма-коррекцией позже.