-
Notifications
You must be signed in to change notification settings - Fork 16
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
PBR dielectrics/metals is broken if blacked #666
Comments
При отражении от диэлектрика спектр световых волн не меняется, а при дифузе фотоны взаимодействуют с атомами, рассеиваясь под поверхностью во всех направлениях. Так в нашей реальности получаются два разных явления:
В случае с металлом отражение принимает цвет поверхности либо благодаря квантовым эффектам (золото) либо благодаря лаку/краске (то есть полупрозрачный цветной слой поверх железки). Короче, у металла всё умножается на base_color, но у диэлектрика спекуляр на base_color умножать не надо. У нас же диффуз с отражениями мешаются в одну кучу. Это неправильно. |
Я у себя в пайплайне делал отдельно пасс отражения и пасс диффузного GI. Были вопросы к тому, как я всё это смешиваю после шумодава, но в целом выглядело получше. В текущем варианте рендера ветки vulkan, чтобы совсем всё не переписывать, можно просто сохранять результат bounce.comp в две разных текстуры. Если у поверхности нарандомилось BRDF_SPECULAR, сохраняем в отражения, а если нет, то в диффуз. Потом отдельно их денойзим и правильно смешиваем (диффуз умножаем на base_color, а спекуляр не умножаем). Могу попробовать быстро пофиксить |
https://github.com/0x4E69676874466F78/test_maps_for_hlrtx_project/releases/tag/2023_12_15 карты обновил где добавил металло-дилектрики. |
Deprecate `brdf.h` usage, start writing our own BRDF functions. Use glTF 2.0 BRDF mixing model as a simple starting point. Mix-in base_color into specular early, as it is light-direction dependent and cannot be easily separated. Disable bounces for now, as we don't have yet good sampling story, need to write "backwards" BRDFs that give us ray directions to sample, and accommodate for that sampling bias in BRDF attenuation itself. Also introduces some other weird artifacts on `test_material` map, investigation pending. Related to black metals in #666
Hand-made organic bespoke GMO-free BRDFs - [x] Fix black metals in #666 - [x] Better diffuse-vs-specular channels tracking - [x] specular reflections - [x] Fix new `test_material` glitches - [x] Fix #461 - [x] Fix #151 - [x] Fix #266 - [x] Filter out zero-area degenerate triangles (NOTE: might affect normal smoothing) - [x] Implement #126 - [x] sun solid angle parametrization - [x] Make new brdfs sampling functions - [ ] distant light circular glitches - [x] not enough float precision, addressed to a degree with slight modifications to equations - [x] Address glow over weapons in RT, see #442 - [x] bounces - [x] diffuse - [x] why is it so dark? - [x] specular - [x] Peformance differences. Why is there no CPU-GPU parallelism anymore? - [x] `VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT` forces cpu-gpu sync. 💩 - [x] Make a special flag for it - [x] Update rendertests - [x] add more channels - [x] add white furnace display test
Done in the handmade-brdfs branch/PR |
Открываем mirror.mat находим там "for" "reflect1" и раскомментируем там
Далее идём на test_glass и видим там где были зеркала абсолютно чёрное тело вместо блестящего "чёрного пластика".
Его даже фонарик не берёт. С белым basecolor_map всё работает вроде корректно.
Диэлектрик ещё так устроен что как раз на чёрном отражения у него лучше:
Рендер substance designer, в режиме IRay (photoreal).
The text was updated successfully, but these errors were encountered: