High Dynamic Range (HDR) — это метод, который позволяет работать с изображениями, имеющими гораздо более широкий диапазон яркости, чем стандартные изображения с использованием 8 бит на канал. Использование HDR позволяет создать визуальные эффекты, которые гораздо ближе к реальной жизни, улучшая освещённость и тени в сценах. В PlayCanvas это достигается через использование специальных текстур и различных техник для отображения света в игровом движке.
HDR представляет собой набор методов, позволяющих работать с более широким диапазоном яркости и контрастности в сценах. В традиционных изображениях (с 8 битами на канал) максимальный диапазон яркости ограничен диапазоном от 0 до 255. В случае HDR, изображение может использовать гораздо больше бит для представления света, что позволяет работать с яркими световыми источниками, тенями и эффектами, приближенными к реальному миру.
В PlayCanvas HDR поддерживается с помощью текстур с более высокой битовой глубиной, таких как 16-битные и 32-битные форматы, что позволяет сохранить более детализированное освещение и цветовые градиенты.
Для создания HDR-сцен в PlayCanvas необходимо выполнить несколько шагов:
Использование HDR-камеры Для активации HDR в
PlayCanvas используется настройка камеры. Важный момент — необходимо
задать hdr значение в true для камеры, чтобы
она начала использовать HDR.
var camera = new pc.Camera();
camera.hdr = true;Использование HDR-текстур Для корректного
отображения HDR-контента используются текстуры, поддерживающие более
высокий диапазон значений цвета. Обычно используются форматы
RGBE или RGBA16F для текстур. Важно, чтобы все
текстуры, которые требуют высокой яркости, были загружены в этих
форматах.
var texture = new pc.Texture(device, {
width: 512,
height: 512,
format: pc.PIXELFORMAT_R16F
});Экспозиция Экспозиция — это параметр,
определяющий, насколько яркими будут источники света в сцене. В
PlayCanvas можно настроить экспозицию в камере с помощью параметра
exposure, который позволяет контролировать яркость сцены,
сохраняя реалистичную детализацию.
camera.exposure = 1.2;Tonemapping — это процесс преобразования изображения с высоким динамическим диапазоном (HDR) в изображение с более низким динамическим диапазоном (LDR), которое можно отобразить на экране с ограниченной яркостью, как это происходит в стандартных мониторах. Tonemapping используется для того, чтобы сохранить детали в светлых и тёмных участках изображения, не перегружая их.
В PlayCanvas для выполнения tonemapping используется встроенный механизм с несколькими методами. Это позволяет добиться реалистичного отображения сцен, при этом улучшая качество восприятия на стандартных дисплеях.
Reinhard Один из самых популярных алгоритмов для тонемаппинга, который используется в PlayCanvas. Он помогает сохранить детали как в ярких, так и в темных частях изображения, применяя нормализацию яркости. Для использования этого метода достаточно настроить постобработку камеры.
var reinhard = new pc.shader.PostEffect({
fragmentShader: 'reinhard'
});
camera.postEffects.add(reinhard);Filmic Метод Filmic применяет более сложную кривую тонемаппинга, которая особенно эффективна для работы с изображениями, близкими к реальному кино. Этот метод используется для создания визуальных эффектов, похожих на те, что можно увидеть в кинофильмах.
var filmic = new pc.shader.PostEffect({
fragmentShader: 'filmic'
});
camera.postEffects.add(filmic);Uncharted 2 Этот алгоритм был разработан на основе техники, использованной в игре Uncharted 2. Он предоставляет дополнительные настройки для корректного отображения высококонтрастных сцен с учётом специфики игрового движка.
var uncharted2 = new pc.shader.PostEffect({
fragmentShader: 'uncharted2'
});
camera.postEffects.add(uncharted2);После настройки камеры и текста для HDR важно помнить, что на производительность игры влияет каждый элемент, использующий высокую яркость и глубину цвета. Поэтому важно оптимизировать использование HDR, подбирая параметры таким образом, чтобы это не влияло сильно на производительность, особенно на мобильных устройствах или старых ПК.
Вместо того чтобы загружать всю сцену в HDR, можно применить только необходимые части — например, источники света или текстуры с высокой детализацией. Это позволит достичь нужного эффекта, не перегружая систему.
HDR и тонемаппинг — это мощные инструменты для улучшения визуальных эффектов в играх и интерактивных приложениях. В PlayCanvas они позволяют создавать сцены с более реалистичным освещением, а также дают возможность контролировать отображение ярких и тёмных участков изображений с помощью различных методов тонемаппинга. Правильное использование этих технологий помогает достичь высокого уровня визуальной красоты, при этом не перегружая производительность приложения.