Size: a a a

pro.graphon (and gamedev)

2020 April 30

S

Skarn in pro.graphon (and gamedev)
источник

S

Skarn in pro.graphon (and gamedev)
называется просто Alpha
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
используй glBlendFunc
источник

S

Skarn in pro.graphon (and gamedev)
Timur Gagiev
используй glBlendFunc
но как?
источник

S

Skarn in pro.graphon (and gamedev)
если они не совпадают
источник

S

Skarn in pro.graphon (and gamedev)
не понимаю как ей добиться такого же результата
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
а вот так, забить и использовать
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
разница будет только в случае если ты рендеришь в текстуру с альфой, затем эту текстуру отрисовываешь поверх чего-то
источник

S

Skarn in pro.graphon (and gamedev)
ну такое часто бывает, когда два объекта друг за другом
источник

S

Skarn in pro.graphon (and gamedev)
а как лучше сделать glBlendFunc(src_color, dest_color) просто?
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
Skarn
ну такое часто бывает, когда два объекта друг за другом
зачем объекты в текстуру перед этим рисовать?
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
Skarn
а как лучше сделать glBlendFunc(src_color, dest_color) просто?
да, первые два аргумента бери и всё
источник

S

Skarn in pro.graphon (and gamedev)
Timur Gagiev
зачем объекты в текстуру перед этим рисовать?
нет, объекты я в текстуру не рисую. Текстуры не меняются вообще. Просто текстура через sampler2D накладывается в шейдере на геометрию
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
значит это не твой случай
источник

S

Skarn in pro.graphon (and gamedev)
тогда все будет работать?
источник

S

Skarn in pro.graphon (and gamedev)
даже если на сцене несколько объектов друг за другом?
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
будет, тебе пофигу на альфу в фреймбуфере
источник

S

Skarn in pro.graphon (and gamedev)
ок, каеф. спасибо!
источник

S

Skarn in pro.graphon (and gamedev)
а то было обидно написать рендер и в самом конце обнаружить что нет функции)
источник

KP

Konstantin Pail in pro.graphon (and gamedev)
Alexander Busarov
Кажется ребята просто подобрали на глазок, чтобы выглядело наиболее правдоподобно на реальных материалах
Все diffuse-brdf из microfacet model подбираются на глаз, потому что в этом случае brdf не выводится аналитически - интеграл по микрограням не посчитать (в отличие от specular, где взаимодействие с конкретной микрогранью - дельта функция и интеграл считается тривиально). 1-F это да, свет ушедший в transmiting, но выйти в определенном направлении он может уже из любой микрограни (а не только с той, у которой микронормаль совпадает с халф-вектором. и поэтому диффузе халф вектор не особо поможет). Поэтому умножить диффузный свет на 1-F в этой теории это грубая аппроксимация. В идеале diffuse-brdf должна быть выведена из NDF. Еще есть Oren-Nayar, но эта модель основывается на другой NDF (не GGX), поэтому сочетаться с GGX specular будет не очень физически корректно. Эту проблему пытались решить во Frostbite (пробовали подобрать преобразование для roughness между Oren-Nayar и GGX specular). В итоге там на тот момент вроде остановились на Disney. Но Disney - это эмпирическая модель, не основанная на теории микрограней (просто подобрали формулы, чтобы соответствовать результатам замеров из MERL database). При этом Disney не сохраняет энергию, и для Frostbite пытались вывести модификацию, которая сохраняет энергию. На GDC в 2017 году рассказали про аппроксимацию diffuse на основе GGX NDF: https://twvideo01.ubm-us.net/o1/vault/gdc2017/Presentations/Hammon_Earl_PBR_Diffuse_Lighting.pdf (используется в Titanfall 2). Подход похож на Oren-Nayar - выполняют численные симуляции (path tracing) и на их основе подбирают формулы, которые хорошо соответствуют результатам.
источник