Publish @kas, @Joker, @Denis Sladkov, @Zeux: xxAA & stuff

Случилось подряд две беседы про антиалиасинг, надо запостить для истории. Откровений там никаких нет, скорее подтверждение статуса кво и небольшие трюки вокруг. Мне вот про блур масочки для OIT понравилось, надо попробовать.


People in this conversation:
Vadim Shcherbakov (kas) Add
Burut->Skyfallen->contracts ( pc, mac, psp, ps3, ios )
Sergey Makeev (Joker) Add
Mail.ru games – Technical Director (Client).
Previously: Akella, 1C.
Freelance: Gaijin, IceHill, DAT
Boris Batkin Add
i press buttons for living. u can call me god
Arseny Kapoulkine (Zeux) Add
CREAT Studios, Saber3D, Sperasoft (EA Sports – FIFA). Currently making kids happy at ROBLOX. http://zeuxcg.org/
Denis Sladkov Add
Пасу котов в рендер отделе Saber Interactive. Делал картинку для Timeshift, BattleLA, Halo CE:Anniversary, Inversion.
Sergei Miloikov (Z) Add
Senior programmer at Crytek Black Sea
Tropico 3-4
Graphics + engine + tools
Ruslan Abdikeev (aruslan) Add
http://aruslan.livejournal.com/tag/pnl
Coding for the food at Google.
Alexey Vlasov (_All) Add
Skyfallen, Mail Ru, Arktos Entertainment Art Director
Personal Site http://all.scan3d.ru/
CV
Simon Kozlov Add
Engineer at ROBLOX (www.roblox.com), previously at Microsoft. And ClosedCircles was my idea.

kas: @Joker
расскажи какой антиалиасинг юзаете?

Joker: reply @kas
юзаем fxaa 3.11

kas: reply @Joker
и все?

Joker: reply @kas
да, и все

kas: reply @Joker
и чо, довольны? а всякое мелкое говно вдали? ну или там альфатестед

Joker: reply @kas
примерно как у Лехи на скрине с роботами, никто особо не парится – пиксельных линеек не видно

kas: reply @Joker
а деревья альфаблендед, да?

Joker: reply @kas
нуууу….. почти
:)
dither альфа, которая потом моется, что бы дырочек от дизеринга не видно было

Simon Kozlov: reply @Joker
А как моется?

Joker: reply @Simon Kozlov
ну там где дизеренное нарисовали масочку аккуратно строим, а потом по ней моем
самая сложность, что масочка тоже с дырками получается

Simon Kozlov: reply @Joker
Сначала помыть масочку? :)

Joker: reply @Simon Kozlov
тогда будет Leaking
зная паттерн дизеринга, можно умно дырочки заполнить :)
тогда ликинг будет сильно меньше

Simon Kozlov: reply @Joker
Дык дизеринг разный для разных значений прозрачности, нет?

Joker: reply @Simon Kozlov
разный, да. но вариантов масочки ограниченное количество :)
получается лучше, чем просто помыть

Simon Kozlov: reply @Joker
А насколько большие маски, на практике? 4×4?

Joker: reply @Simon Kozlov
да 4×4
даже 2×2 вроде была / есть

Simon Kozlov: reply @Joker
Ага, спасибо!

Joker: reply @Simon Kozlov
издалека и со средней дистанции выглядит как OIT :)
вблизи конечно видно, что обман

kas: @Denis Sladkov
и вы тоже, какой антиалиасинк юзаете?

_All: reply @kas
давай я тебе расскажу — никакой!
в хай настройках какой то простенький совсем. Добро пожаловать в волшебный мир фритуплея!
По этому мипмепы блюрим на деревцах — сморица как гавно зато не рябит дико на удалении.

kas: reply @_All
опять же, делать деферед и не делать аа считаю приступлением!

Boris Batkin: reply @kas
думаю fxaa pc воткнут у всех щас

_All: reply @Boris Batkin
угу.
но не пользуют в целом сукины дети.
от этого субьективно — твой ресемплинг в текстуре гораздо интереснее.

kas: reply @Boris Batkin
ну вот похоже не у всех!

_All: reply @kas
Ну (здесь очень секретное число предзаказов и пользователей в альфе) считайют что антиальясинг в принципе не нужен.

Z: reply @_All
Очень странно, без АА деферред въглядит как говно почти везде
надо сильно умудрится сделать арт так, чтобъ не
какой-то картун наверное
если же архитектура и реализм – говно лезет изо всех еджей

kas: reply @_All
как у вас не интересно. интересно как у них

Denis Sladkov: reply @kas
у нас тоже fxaa. ну в смысле все что выпустили до этого – fxaa в разных вариантах

kas: reply @Denis Sladkov
а щяс чонить рисерчили?

Denis Sladkov: reply @kas
щас лайтинг уже форвард практически. думаю попробуем мсаа назад.
у нас долгое время был адский комбо из деферед масочек + хаки для правильных оффсетов при мсаа основном пассе

Zeux: reply @Denis Sladkov
Там счастья на тонких объектах все равно же нет?

Denis Sladkov: reply @Zeux
на сабпиксельных – нет. лоды никто не отменял. но вцелом сильно лучше фхаа.

Zeux: reply @Denis Sladkov
А крайтековское temporal добро не пробовали?

Denis Sladkov: reply @Zeux
смотрели, но не пробовали. визуальный результат на примере крайзиса не впечатлил.

Denis Sladkov: reply @Zeux
там еще вопрос что именно деферится. в принципе можно делать вариант “ничего”. и тогда ок.

Zeux: reply @Denis Sladkov
В смысле если полностью forward (ну типа тех per-tile lists)? Тогда да.

Denis Sladkov: reply @Zeux
там ньюансы. типа теней, которые если деферед – можно сильно качественнее сделать, но в форварде на прозрачном/удаленном и обычный pcf при лукапе в атлас работает.
туманчик частично можно в форварде считать, волюмы творчески задеферить (по тайлам, а не попиксельно)
шейдеры только все дольше компилируются :)
ну и есть какие-то новые фичи типа скрин-спейс отражений, – они тоже сурово противоречат мсаа. пока не ясно доживут ли они до продакшена впрочем.

Zeux: reply @Denis Sladkov
Качественнее потому что depth-aware screen-space blur?

Denis Sladkov: reply @Zeux
блюр это небольшая часть. в шейдере, который считает маску для одного сплита одного лайта очень много всякого. хитрый семплинг, расчетт радиуса с учетом пенумбры, шум специальный итп. ты просто не можешь позволить себе делать такое в форварде.
кроме pcf лукапа и расчета координат атласа ты вообще не сильно можешь себе что-то там позволить

Zeux: reply @Denis Sladkov
Если есть depth prepass, то если бы quad utilization был близок к идеальному то мог бы?
Есть всякие интересные варианты с распределением расчетов по разным пикселям квада (если есть ddx), с ними можно пытаться сделать это дешевле.

Denis Sladkov: reply @Zeux
чисто теоретически – да, но в реальности такой шейдер боюсь будет нежизнеспособным монстром.
я бы скорее думал про оптимизации связанные с реализацией расчета маски на compute shader

Denis Sladkov: reply @Zeux
но кстати ради эксперимента такое должно быть относительно несложно провернуть и померять.

Denis Sladkov: reply @Zeux
а как например оптимизить распределяя вычисления по пикселам квада?

Zeux: reply @Denis Sladkov
Как я понимаю идея не супер хитрая – зная текущий пиксель, считаем треть семплов тени, а потом есть “доступ” к данным соседних пикселей через ddx/ddy – зная текущее значение и разницу, можно посчитать свое. Там есть сложности если нет ddx_fine, я не очень знаю точный workaround про них.
Ща…
http://tinyurl.com/cwetxn7

Zeux: reply @Zeux
Насколько я знаю эту штуку пробовали в каком-то EA тайтле, вроде Fight Night какой-то, и кажется даже зашипили.

Denis Sladkov: reply @Zeux
Прикольно! А я не догадывался про такой трик.

aruslan: reply @Denis Sladkov
Отличный трик. Его автор сейчас рядом со мной стоит :)

Denis Sladkov: reply @Zeux
на текущем этапе с тайлед форвард лайтингом и бОльшей доступной памятью хочется старого-доброго форварда с блендом и мсаа.

This happened on #gamedeff