Open 0x4E69676874466F78 opened 2 years ago
Заметки:
При VK_FORMAT_R16G16B16A16_SFLOAT(97)+VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT(1000104002)
получается автоматическая гамма-коррекция, более того там есть откуда-то тонемаппинг! Хотя цвета от этого немного плывут в ряде сцен.
При VK_FORMAT_A2B10G10R10_UNORM_PACK32(64) VK_COLOR_SPACE_HDR10_ST2084_EXT(1000104008)
нужно производить специальную коррекцию через функцию PQ, тонемаппинг сам не производится, но если его произвести мы теряем в яркости и получается LDR, то есть нужен особый тонемаппинг для HDR или после него надо домножать на что-то.
Вот картинки в архиве, здесь в 8 бит сложно передать, в наивном виде они выглядят одинаково (обрезается диапазон).
hl hdr test.zip
Я разобрался для VK_FORMAT_A2B10G10R10_UNORM_PACK32(64) VK_COLOR_SPACE_HDR10_ST2084_EXT(1000104008) как раз нужна функция applyHuePreservingShoulder, тогда вид становится правильный в ярких областях, ранее я тестировал её но не видел разницы, но с дураты разницу не там смотрел. Пока я прихожу к выводу что тонемапперы по большей части не нужны для HDR и это прибалуда для LDR.
Из известной информации мы ещё можем сходить в проприетарные протоколы нвидии и амд, достав максимальную яркость монитора оттуда, но код будет грязный-муторный, так что я решил что лучше через настройки указать пик яркости монитора самому. Можно создать предустановки на HDR400, HDR600, HDR1000 помимо тонкой настройки.
Разная информация https://ubm-twvideo01.s3.amazonaws.com/o1/vault/gdc2017/Presentations/Fry_Alex_HighDynamicRange.pdf https://www.youtube.com/watch?v=7z_EIjNG0pQ https://github.com/Unity-Technologies/PostProcessing/blob/v2/PostProcessing/Shaders/Colors.hlsl https://d29g4g2dyqv443.cloudfront.net/sites/default/files/akamai/gameworks/hdr/UHDColorForGames.pdf https://ieeexplore.ieee.org/document/7291452
Требуется (устарело)
[x] vk_hdr 1|0 для вкл/выкл HDR. #249 [x] #202 [ ] нормализация или более правильный этап с тонемаппингом, возможно автоматом поможет #193 Если после текущего тонемаппинга добавляю `/ 1.3` то смотрится вполне сносно, но взрывы уже не такие яркие, видимо надо будет взрывам более задирать светимость в конфиге (когда будет). #249 [x] определять перед нами HDR монитор или нет, если нет то блокировать vk_hdr #249 [ ] починить скриншоты для HDR (понятия не имею как, но есть инфа в https://github.com/w23/xash3d-fwgs/pull/249#issuecomment-1019382385 )Дополнительная инфа: https://on-demand.gputechconf.com/siggraph/2016/presentation/sig1611-thomas-true-high-dynamic-range-rendering-displays.pdf https://developer.nvidia.com/hdr-display-sample
https://gpuopen.com/learn/using-amd-freesync-2-hdr-color-spaces/
https://developer.qualcomm.com/sites/default/files/docs/adreno-gpu/developer-guide/tutorials/android/hdr10.html
Related: #193