Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HDR output v2 #727

Draft
wants to merge 9 commits into
base: vulkan
Choose a base branch
from
Draft

Conversation

0x4E69676874466F78
Copy link
Collaborator

@0x4E69676874466F78 0x4E69676874466F78 commented Jan 11, 2024

Новая версия HDR вывода. Теперь это более правильно решает #121

Как пользоваться:

  1. Если вы используете f.lux, то он будет конфликтовать с HDR-режимом, по крайней мере вам придётся вручную в ОС включить HDR-режим (в Windows это Пуск->Параметры->Система->Дисплей->Использовать HDR->Вкл), иначе картинка будет неправильной, но это в любом случае местами будет давать неправильные оттенки, хотя и не настолько плохие если вы не включите предварительно HDR вручную. Я рекомендую временно выключать f.lux при игре с HDR.
  2. открываем консоль, вводим vk_hdr_ и жмём клавишу Tab, там покажет доступные форматы с их id.
  3. Указываем id через vk_hdr_output id. Сейчас поддерживаются два формата.
  4. Переключение на лету работает некорректно и нужно перезапустить игру для правильного отображения.

В первом режиме красивее меню выглядит и сочнее цвета, но неправильнее выглядят частицы оружия, хотя во втором режиме они тоже не очень корректные (сломана глубина). Советую заценить оба режима.
Тестировал в основном на ветке handmade-brdfs там менее шумно. Diff совместим.

Что сделано:

  • Поддержка распространённых HDR форматов вывода
    • VK_FORMAT_A2B10G10R10_UNORM_PACK32(64) VK_COLOR_SPACE_HDR10_ST2084_EXT(1000104008)
    • VK_FORMAT_R16G16B16A16_SFLOAT(97) VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT(1000104002)
  • Переключаемый вывод форматов и правильная их подстановка
  • Добавлены разнообразные функции для работы с HDR (c доклада High Dynamic Range Color Grading and Display in Frostbite), часть возможно портировал некорректно (математику стоит перепроверить), но основное вроде работает ожидаемым образом.
  • Убрал красный экран при загрузке в традиционном рендере
  • Переместил тонемапперы в отдельный файл tonemapping.glsl
  • Добавил новые тонемапперы: Uchimura, Lottes, AgX
  • Добавлена тестовая функция vk_debug_switch_swapchain_format чтобы применить изменение HDR режима (очень нестабильно)
  • Починена сборка на Linux
  • Базовая поддержка скриншотов (сейчас они создаются не совсем правильно, особенно для VK_FORMAT_R16G16B16A16_SFLOAT где сломан синий канал и я не понимаю как это чинить)

Что не сделано/Известные проблемы:

  • Настройка яркости (чуть позже добавлю)
    • В идеале ещё цветности
  • Костыли для традиционного рендера: в отличие от прошлого пуллреквеста здесь просто корректный (насколько это возможно) вывод картинки без вытягивания освещения в HDR пространство. Позже попробую добавить.
  • При валидации работать не будет (почините за меня)
  • Очень плохо работает переключение свапчейна на лету между форматами (с LDR на HDR может переключиться, но сломается 2d слой), я не знаю как это чинить
  • Для VK_FORMAT_A2B10G10R10_UNORM_PACK32 надо по другому 2д слои обрабатывать, но этот красивый вариант я думаю запрятать в квар (в идеале разделить меню и HUD чтобы задать разную яркость им).
  • Настройки и переключение через меню

also added various HDR stuff and new tonemappers: Uchimura, Lottes, AgX
@0x4E69676874466F78 0x4E69676874466F78 marked this pull request as draft January 11, 2024 14:38
@0x4E69676874466F78 0x4E69676874466F78 mentioned this pull request Jan 11, 2024
13 tasks
@0x4E69676874466F78 0x4E69676874466F78 added enhancement New feature or request ray tracing and removed ray tracing labels Jan 11, 2024
@0x4E69676874466F78 0x4E69676874466F78 self-assigned this Jan 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: 🏗 In progress
Development

Successfully merging this pull request may close these issues.

1 participant