w23 / xash3d-fwgs

Vulkan Ray Tracing fork of Xash3D FWGS engine. Intended to be merged into master at some point in the future.
161 stars 16 forks source link

Dynamic/auto exposure #193

Open 0x4E69676874466F78 opened 2 years ago

0x4E69676874466F78 commented 2 years ago

Общее

Стоит добиться эффекта типа как в lost coast: https://developer.valvesoftware.com/wiki/Advanced_HDR Можно менять экспозицию на лету в зависимости от того насколько насыщенный белый в экране, таким образом получаем адаптацию как у глаза для LDR-моников (где мы HDR выдать не можем для реальной адаптации глаза) и избавляемся от константных пересветов. Как оказалось для HDR #121 нам всё равно нужна динамическая экспозиция. Найти подходящий готовый материал сложно, поэтому попробую своими словами.

Актуальное

Примеры реализации:

Старая инфа

Варианты:

Параметры:

  1. скорость реагирования из тёмного и скорость реагирования из светлого, так как вроде у глаза разная скорость привыкания.
  2. минимальное и максимальное значение яркости при котором надо применить автоматическую экспозицию.
  3. базовая экспозиция (крутим чтобы добиться нужный вид наступающий после адаптации, то что щас у нас color_factor вроде).
  4. в сторонних реализациях есть ещё фильтрация понизу и поверху чтобы выкинуть из выборки слишком тёмные или слишком светлые пиксели.
  5. если хотим ещё реализма надо добавить автобаланс белого! так как глаза адаптируются к цветовой температуре света.

Про адаптацию для сравнения:

Dark Adaptation Slow, can take up to 30 minutes to see in the dark Light Adaptation Fast, less that a second to a minute to adapt to bright ligh

Реализация в PrimeXT (может удастся нам портировать?): https://github.com/SNMetamorph/PrimeXT/commit/dce005d6fcbefbdc0b3e77ef5994232c4eecb7ec (устарело, нужно смотреть на новые коммиты).

Ещё инфа на всякий случай: Результат ещё зависит от применяемого тонемаппинг оператора, их существует дофига: https://www.osapublishing.org/josaa/fulltext.cfm?uri=josaa-35-4-626&id=383934 Часть я ещё кидал в прошлой задаче: https://github.com/dmnsgn/glsl-tone-map https://github.com/tizian/tonemapper Здесь можно посмотреть на примеры некоторых (aces к сожалению нет): http://pfstools.sourceforge.net/tmo_gallery/nancy_church_1.html http://pfstools.sourceforge.net/tmo_gallery/seymour_park.html Из галереи мне понравился reinhard02, надо будет сравнить их. https://www.shadertoy.com/view/WdjSW3

0x4E69676874466F78 commented 2 years ago

Добавил ссылку на неплохую статью, спасибо @sultim-t.

0x4E69676874466F78 commented 1 year ago

Инфа от @ncuxonaT

я подставил функции расчета экспозиции одну в другую, там всё сокращается до 5 / (48 * x), где x - это luminance image

0x4E69676874466F78 commented 12 months ago

Забыл сказать: были добавлены статьи https://placeholderart.wordpress.com/2014/12/15/implementing-a-physically-based-camera-automatic-exposure/ https://knarkowicz.wordpress.com/2016/01/09/automatic-exposure/ Спасибо anton_kovalev (из дискорда).

w23 commented 9 months ago

Там ещё какой-то AgX форсят:

SNMetamorph commented 9 months ago

https://bartwronski.com/2022/02/28/exposure-fusion-local-tonemapping-for-real-time-rendering/

0x4E69676874466F78 commented 9 months ago

@w23

Там ещё какой-то AgX форсят:

Можно добавить, выглядит любопытно, но это не совсем по теме.

@SNMetamorph

https://bartwronski.com/2022/02/28/exposure-fusion-local-tonemapping-for-real-time-rendering/

О заебись, сегодня как раз об этом думал.