Редактор Unity поддерживает как линейный, так и гамма-процесс. Линейный рабочий процесс имеет пересечение цветового пространства, где текстурыизображение, используемое при рендеринге GameObject , спрайт или элемент пользовательского интерфейса. Текстуры часто применяются к поверхности сетки, чтобы придать ей визуальную детализацию. Подробнее
См. в Словарь, которые были созданы в гамма-цветовом пространстве, могут быть правильно и точно воспроизведены в линейном цветовом пространстве. Дополнительную информацию о гамме и линейном цветовом пространстве см. в документации по обзору линейного рендеринга.
Дополнительную информацию см. в документации по:
- Обзор линейного рендеринга для получения справочной информации о линейном и гамма-цветовом пространстве.
- Гамма-текстуры с линейным рендерингом для получения информации о гамма-текстурах в линейном рабочем процессе.
- Линейные текстуры для получения информации о работе с линейными текстурами.
Текстуры, как правило, сохраняются в цветовом пространстве гаммы, тогда как шейдеры предполагают линейное цветовое пространство. Таким образом, когда текстуры сэмплируются в шейдерах, значения на основе гаммы приводят к неточным результатам. Чтобы преодолеть это, вы можете настроить Unity на использование сэмплера RGB для перехода от гаммы к линейной выборке. Это обеспечивает линейный рабочий процесс со всеми входными и выходными данными Shaderпрограммы, работающей на графическом процессоре. Подробнее
Смотрите в Словарь в правильном цветовом пространстве, что приводит к правильному результату.
Чтобы указать гамма или линейный рабочий процесс, выберите Редактировать > Настройки проектаОбширная коллекция настроек, которые позволяют настроить поведение физики, аудио, сети, графики, ввода и многих других областей вашего проекта. Подробнее
См. в Словарь, затем выберите Player перейдите в раздел Другие настройки, откройте раздел RenderingПроцесс рисования графики на экран (или в текстуру рендеринга). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
См. раздел Словарь и измените Цветовое пространство на Линейный или Гамма, в зависимости от ваших предпочтений.
Рабочий процесс гамма-цветового пространства
Хотя линейный рабочий процесс обеспечивает более точную визуализацию, иногда вам может понадобиться рабочий процесс с гаммой (например, на некоторых платформах оборудование поддерживает только формат гаммы).
Для этого установите для параметра Цветовое пространство значение Гамма в настройках Проигрывателя (меню: Правка > Настройки проекта, затем выберите категорию Игрок). Если выбран этот параметр, конвейер рендеринга использует все цвета и текстуры в цветовом пространстве гаммы, в котором они хранятся — из текстур не удаляется гамма-коррекция, когда они используются в шейдере.
Обратите внимание, что вы можете обойти выборку sRGB в режиме Цветовое пространство: Гамма, сняв флажок sRGB (цветовая текстура) в Окно инспектора для текстуры.
Примечание. Несмотря на то, что эти значения находятся в гамма-пространстве, все расчеты шейдеров в редакторе Unity по-прежнему обрабатывают входные данные, как если бы они находились в линейном пространстве. Чтобы обеспечить приемлемый конечный результат, редактор вносит коррективы для работы с несоответствующими форматами, когда он записывает выходные данные шейдера в буфер кадра и не применяет гамма-коррекцию к конечному результату.
Рабочий процесс линейного цветового пространства
Работа в линейном цветовом пространстве обеспечивает более точную визуализацию, чем работа в цветовом пространстве гамма.
Для этого установите для параметра Цветовое пространство значение Линейный в настройках Проигрывателя (меню: Правка > Настройки проекта, затем выберите категорию Игрок).
Вы можете работать в линейном цветовом пространстве, если ваши текстуры были созданы в линейном цветовом пространстве или гамма-пространстве. Гамма цветового пространства Входные данные текстуры для программы шейдера линейного цветового пространства передаются шейдеру с удаленной из них гамма-коррекцией.
Примечание. В окне Предварительный просмотр текстуры в разделе Настройки импорта текстуры отображаются текстуры с использованием гамма-смешивания, даже если вы работаете в линейное цветовое пространство.
Линейные текстуры
- Выбор Цветового пространства: Линейный предполагает, что текстуры находятся в цветовом пространстве гаммы. Unity по умолчанию использует сэмплер sRGB графического процессора для перехода от гаммы к линейному цветовому пространству. Если ваши текстуры созданы в линейном цветовом пространстве, вам необходимо обойти выборку sRGB. Дополнительную информацию см. в документации по Работе с линейными текстурами.
Гамма-текстуры
- Переход от гамма-цветового пространства к линейному цветовому пространству требует некоторой настройки. Дополнительную информацию см. в документации по Гамма-текстурам с линейным рендерингом.
Примечания
Для цветов это преобразование применяется неявно, поскольку редактор Unity уже преобразовывает значения в числа с плавающей запятой перед передачей их в графический процессор в виде констант. При выборке текстур графический процессор автоматически удаляет гамма-коррекцию, преобразуя результат в линейное пространство.
Эти входные данные затем передаются в шейдер, при этом расчеты освещения выполняются в линейном пространстве, как обычно. При записи результирующего значения в буфер кадра оно либо сразу подвергается гамма-коррекции, либо остается в линейном пространстве для последующей гамма-коррекции — это зависит от текущей конфигурации рендеринга. Например, в расширенном динамическом диапазоне (HDR) результаты рендеринга остаются в линейном пространстве, а гамма корректируется позже.
Различия между линейным и гамма-цветовым пространством
При использовании линейного рендеринга входные значения уравнений освещения отличаются от значений в гамма-пространстве. Это означает разные результаты в зависимости от цветового пространства. Например, поверхности, на которые падает свет, имеют разные кривые отклика, и эффекты изображения ведут себя по-разному.
Слабое затемнение
Спад на расстоянии и нормальное освещение различаются двумя способами:
При рендеринге в линейном режиме дополнительная гамма-коррекция увеличивает радиус света.
Границы освещения также отображаются более четко. Это более точно моделирует падение интенсивности освещения на поверхностях.
Линейная характеристика интенсивности
При использовании гамма-рендеринга к цветам и текстурам, переданным в шейдер, уже применена гамма-коррекция. Когда они используются в шейдере, цвета высокой яркости на самом деле ярче, чем они должны быть по сравнению с линейным освещением. Это означает, что по мере увеличения интенсивности света поверхность становится ярче нелинейным образом. Это приводит к тому, что во многих местах освещение может быть слишком ярким. Он также может предоставлять модели и сценыСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
В Словарь чувствуется размытость. Когда вы используете линейный рендеринг, отклик поверхности остается линейным по мере увеличения интенсивности света. Это приводит к гораздо более реалистичному затенению поверхности и более приятному цветовому отклику поверхности.
Изображение Infinite 3D Head Scan ниже демонстрирует различную интенсивность света на модели головы человека при линейном и гамма-освещении.
Линейное и гамма-смешивание
При смешивании с буфером кадров смешивание происходит в цветовом пространстве буфера кадров.
При использовании рендеринга гамма-пространства нелинейные цвета смешиваются друг с другом. Это не математически правильный способ смешивания цветов и может дать неожиданные результаты, но это единственный способ смешивания на некоторых графических аппаратных средствах.
При использовании рендеринга в линейном пространстве смешивание происходит в линейном цветовом пространстве: это математически правильно и дает точные результаты.
На изображении ниже показаны различные типы смешивания: