Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Линейность или работа с гаммой

Редактор Unity поддерживает как линейный, так и гамма-процесс. Линейный рабочий процесс имеет пересечение цветового пространства, где текстурыизображение, используемое при рендеринге GameObject , спрайт или элемент пользовательского интерфейса. Текстуры часто применяются к поверхности сетки, чтобы придать ей визуальную детализацию. Подробнее
См. в Словарь
, которые были созданы в гамма-цветовом пространстве, могут быть правильно и точно воспроизведены в линейном цветовом пространстве. Дополнительную информацию о гамме и линейном цветовом пространстве см. в документации по обзору линейного рендеринга.

Дополнительную информацию см. в документации по:

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

Чтобы указать гамма или линейный рабочий процесс, выберите Редактировать > Настройки проектаОбширная коллекция настроек, которые позволяют настроить поведение физики, аудио, сети, графики, ввода и многих других областей вашего проекта. Подробнее
См. в Словарь
, затем выберите Player перейдите в раздел Другие настройки, откройте раздел RenderingПроцесс рисования графики на экран (или в текстуру рендеринга). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
См. раздел Словарь
и измените Цветовое пространство на Линейный или Гамма, в зависимости от ваших предпочтений.

Настройки проигрывателя, отображающие настройку цветового пространства
Настройки проигрывателя, отображающие настройку цветового пространства

Рабочий процесс гамма-цветового пространства

Хотя линейный рабочий процесс обеспечивает более точную визуализацию, иногда вам может понадобиться рабочий процесс с гаммой (например, на некоторых платформах оборудование поддерживает только формат гаммы).

Для этого установите для параметра Цветовое пространство значение Гамма в настройках Проигрывателя (меню: Правка > Настройки проекта, затем выберите категорию Игрок). Если выбран этот параметр, конвейер рендеринга использует все цвета и текстуры в цветовом пространстве гаммы, в котором они хранятся — из текстур не удаляется гамма-коррекция, когда они используются в шейдере.

Обратите внимание, что вы можете обойти выборку sRGB в режиме Цветовое пространство: Гамма, сняв флажок sRGB (цветовая текстура) в Окно инспектора для текстуры.

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

Рабочий процесс линейного цветового пространства

Работа в линейном цветовом пространстве обеспечивает более точную визуализацию, чем работа в цветовом пространстве гамма.

Для этого установите для параметра Цветовое пространство значение Линейный в настройках Проигрывателя (меню: Правка > Настройки проекта, затем выберите категорию Игрок).

Вы можете работать в линейном цветовом пространстве, если ваши текстуры были созданы в линейном цветовом пространстве или гамма-пространстве. Гамма цветового пространства Входные данные текстуры для программы шейдера линейного цветового пространства передаются шейдеру с удаленной из них гамма-коррекцией.

Примечание. В окне Предварительный просмотр текстуры в разделе Настройки импорта текстуры отображаются текстуры с использованием гамма-смешивания, даже если вы работаете в линейное цветовое пространство.

Линейные текстуры

  • Выбор Цветового пространства: Линейный предполагает, что текстуры находятся в цветовом пространстве гаммы. Unity по умолчанию использует сэмплер sRGB графического процессора для перехода от гаммы к линейному цветовому пространству. Если ваши текстуры созданы в линейном цветовом пространстве, вам необходимо обойти выборку sRGB. Дополнительную информацию см. в документации по Работе с линейными текстурами.

Гамма-текстуры

Примечания

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

Эти входные данные затем передаются в шейдер, при этом расчеты освещения выполняются в линейном пространстве, как обычно. При записи результирующего значения в буфер кадра оно либо сразу подвергается гамма-коррекции, либо остается в линейном пространстве для последующей гамма-коррекции — это зависит от текущей конфигурации рендеринга. Например, в расширенном динамическом диапазоне (HDR) результаты рендеринга остаются в линейном пространстве, а гамма корректируется позже.

Различия между линейным и гамма-цветовым пространством

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

Слабое затемнение

Спад на расстоянии и нормальное освещение различаются двумя способами:

  • При рендеринге в линейном режиме дополнительная гамма-коррекция увеличивает радиус света.

  • Границы освещения также отображаются более четко. Это более точно моделирует падение интенсивности освещения на поверхностях.

Слева: Освещение сферы в линейном пространстве. Справа: освещение сферы в гамма-пространстве.
Слева: Освещение сферы в линейном пространстве. Справа: освещение сферы в гамма-пространстве.

Линейная характеристика интенсивности

При использовании гамма-рендеринга к цветам и текстурам, переданным в шейдер, уже применена гамма-коррекция. Когда они используются в шейдере, цвета высокой яркости на самом деле ярче, чем они должны быть по сравнению с линейным освещением. Это означает, что по мере увеличения интенсивности света поверхность становится ярче нелинейным образом. Это приводит к тому, что во многих местах освещение может быть слишком ярким. Он также может предоставлять модели и сценыСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
В Словарь
чувствуется размытость. Когда вы используете линейный рендеринг, отклик поверхности остается линейным по мере увеличения интенсивности света. Это приводит к гораздо более реалистичному затенению поверхности и более приятному цветовому отклику поверхности.

Изображение Infinite 3D Head Scan ниже демонстрирует различную интенсивность света на модели головы человека при линейном и гамма-освещении.

Infinite 3D Head Scan by Lee Perry-Smith, под лицензией Creative Commons Attribution 3.0 Unported License (доступна на сайте www.ir-ltd.net)
Infinite 3D Head Scan by Lee Perry-Smith, под лицензией Creative Commons Attribution 3.0 Unported License (доступна на сайте www.ir-ltd.net)

Линейное и гамма-смешивание

При смешивании с буфером кадров смешивание происходит в цветовом пространстве буфера кадров.

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

При использовании рендеринга в линейном пространстве смешивание происходит в линейном цветовом пространстве: это математически правильно и дает точные результаты.

На изображении ниже показаны различные типы смешивания:

Вверху: смешивание в линейном цветовом пространстве дает ожидаемые результаты смешивания<br>Внизу: смешивание в цветовом пространстве гаммы приводит к перенасыщенным и чрезмерно ярким смешениям
Вверху: смешивание в линейном цветовом пространстве дает ожидаемые результаты смешивания
Внизу: смешивание в цветовом пространстве гаммы приводит к перенасыщенным и чрезмерно ярким смешениям
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3