Привет. Запутался в обработках уже
Рендерю ПБР во флоат буфер.
Далее делаю
vec4 toneMapped = sceneColor;
toneMapped.xyz = toneMapped.xyz / (toneMapped.xyz + vec3(1.0));
применяю 1/gamma (любое подсовываю 1..2..33) потом
===================
получил блеклые безжизненные цвета + освещения вообще не видно на фоне остального
https://www.dropbox.com/s/680i58l5sc9m9h3/mul1.jpg?dl=0
умножил при задании цвета источника (это потом в шейдер ПБР идет как цвет источника)
#define TONMAP_LIGHTING_COLOR_MUL 5 // чем ярче, тем насыщеннее после освещения CVector3f Color2Radiance(float *col) { float mul = PI * TONMAP_LIGHTING_COLOR_MUL; CVector3f rez; rez[0] = col[0] * mul; rez[1] = col[1] * mul; rez[2] = col[2] * mul; return rez; }
https://www.dropbox.com/s/vyjaraxoqvkh9qu/mul5.jpg?dl=0
вроде как лучше стало. Но все остальное стало блеклым . - туман был раньше белый (и там цвет больше 1 сейчас) Какая-то серость. Исправить можно рисуя туман не с цветом 1 1 1, а 100 100 100. , но мне не нравится такой подход
https://www.dropbox.com/s/7p4abtkmnmulewi/gray.jpg?dl=0
=========================
Далее я стал пробовать другие тонмапинги
vec3 FilmicMain( vec3 texColor ) { vec3 x = max(vec3(0.0),texColor-0.004); // Filmic Curve vec3 retColor = (x*(6.2*x+.5))/(x*(6.2*x+1.7)+0.06); return pow(retColor,vec3(2.2)); // avoid coded gamma }
поживее стало
https://www.dropbox.com/s/5k03ue1n13w2blw/filmic.jpg?dl=0
https://www.dropbox.com/s/6ijia8uhn354wpo/antigray.jpg?dl=0
=============
Еще можно добавить експу перед тонмапом: toneMapped = vec4(1.0) - exp(-f4Color * fext);
================
Так вот вопросы - че, как это все настраивать,я не понимаю.
В освещение какой цвет передавать, там PI какое-то. Как провести аналогию со старым освещением где 1 1 1 цвет . Мне нужно чтобы одинаково выглядело вцелом по яркости ?
По блеклому рейнхарду что можно сказать? Так и должно быть? И просто его не юзать ? Филмик оставить? Тут правильно всё?
Нужна ли экспа?
The Andreyp
а у тебя разве HDR, что бы тонмап применять?
HDR Tonemapping – Перегон HDR в LDR (ACES, Uncharted 2, Reinhard, Cineon).
// HDR tonemapping Reinhard
color = color / (color + vec3(1.0));
// gamma correct
color = pow(color, vec3(1.0 / 2.2));
Ты уверен, что не перегоняешь LDR в LDR? Просто гамма сильная у тебя слишком.
lookid
ну - я завел фбо с флоат текстурами
пощитал пбр
обработал
да и цвет в буфере реально > 1
а финальная гамма 2.2, можно 1 поставить
У тебя тонмапер говно. Рейнхард это технологии 20-ти летней давности.
Battle Angel Alita
так блеклость при ренхарде это обычное дело?
после FilmicMain норм?
я уверен что перегоняю откуда куда надо, ибо без тонмапера выглядит всё так
The Andreyp
то есть ты сначала настроил картинку так, чтобы она тебе нравилась в LDR, а потом приделываешь к ней тонмапперы и негодуешь, что тебе результат не нравится? лол, так тебе шашечки или ехать?
Suslik
типа того))))
потому что юзер врубает ультракачество и у него все по-другому...
то есть не будет одинаковости и такие изменения тонов это нормально???
как это все натсраивать и крутить?
Никак. Тон-маппинг это "грубо говоря" перегон из линейного пространства цветов в логарифмическое. Детали не важны. У тебя текстуры должны быть изначально с кривым [0, 1023] => [0, 1], который уже тонмаппером ложится на [0, 255] либо [16, 235].
чего-то я не понимаю. Я думал, что смысл PBR в том, что 2д / 3д артистам надо меньше заниматься подгонкой и больше использовать материалы из реального мира с реальными характеристиками. И вроде как LDR -> HDR это неотъемлимая часть рендеринга. (А еще где-то sRGB спрятался и на что-то влияет). Мне казалось, что оно все из коробки должно хорошо работать.
MAMOHT-92
> Мне казалось, что оно все из коробки должно хорошо работать.
а нормальный свет, туман, энвайронмент мепы и экспозицию тебе тоже должны из коробки поставить, как только ты pbr шейдер напишешь?
MAMOHT-92
PBR это кук-торренс + IBL. А Tone Mapping был еще в 2007. Ну да, это всё давно уже есть. Просто не выделялось особо.
The Andreyp
> то есть не будет одинаковости и такие изменения тонов это нормально???
как могут правильное и неправильное изображения быть одинаковыми? ясное дело, что если ты долго настраивал, чтобы неправильное выглядело красиво, то правильное будет выглядеть хуже. tonemapping — это не опция в настройках для "ultra" качества, которую можно нашлёпнуть свёрху и волшебно сделать картинку красивее, с ним сразу нужно ставить освещение и энвайронменты и, ясное дело, его нельзя делать опциональным.
Короче, подгонять под "красиво" нужно когда у тебя уже всё включено.