Временное решение

топ 100 блогов stokesequation23.11.2019

Вчера отчитал последнюю в этом году лекцию в МГУ, для ВМКшников.

Временное решение

Читал про графоуни и грязные хаки, с графоуни связанные. Хотя народ там в математике более чем прошаренный, старался рассказывать все на словах и картиночках, так как нагромождение матриц трансформации, упаковка констант в беззнаковые целые и прочий ужас — вовсе не то, за что я графику полюбил.

Вчера под конец лекции рассказал про технологию, которая называется "темпоральная репроекция".

Суть такова: вообще говоря, почти все то, что у нас рисуется в текущем кадре, уже было в предыдущем. Что-то сдвинулось и переместилось, камера повернулась - но добрых процентов 90 того, что было на прошлом кадре, попадает в кадр и сейчас. В том же виде.

А если ничего не сдвинулось и не поменялось, так вообще все 100%. Ну и это сохранение информации надо бы как-то использовать, чтобы можно было прилично так сэкономить на вычислениях.

Для этого мы, для начала, сохраняем предыдущий кадр, так как он нам пригодится.

Во-вторых, во время рисования следующего кадра мы в каждой точке проводим нехитрую операцию: берём мировую позицию только что нарисованной точки и проецируем её на предыдущий кадр. Получая экранную позицию нашей точки на предыдущем кадре. И из сохраненного предыдущего кадра берем цвет из этой экранной позиции.

Временное решение
Зелёная точка присутствует на обоих кадрах, мы всего лишь восстанавливаем ее позицию на предыдущем кадре

Далее мы смешиваем тот цвет, который мы вычислили для текущего кадра, с цветом, который мы вычислили на предыдущем. В пропорциях 90/10. Где 90% — это доля предыдущего кадра. И проделываем все эти операции в каждой точке для каждого пикселя.

Почему так много? Потому что в предыдущем кадре тоже замешано 10% от него, и 90 процентов от пред-предыдущего. И так далее, и так далее, рекуррентно и на бесконечность, в прошлое.

К слову говоря, от рисования текущего кадра нас это не избавляет никак. Репроекция может не получиться - так как на предыдущем кадре эта точка может оказаться за пределами экрана, закрытой другим объектом или еще какой-то кракозяброй. И в этих точках мы будем вынуждены использовать все 100% с текущего кадра. Тогда зачем нам нужна эта технология?

Временное решение

Вот тут точки не совпадают, поэтому использовать в ней информацию с предыдущего кадра нельзя

А затем, что мы можем рисовать текущий кадр с куда меньшей тщательностью.

Например, при вычислении отражений от шероховатых поверхностей надо выполнить многие десятки трассировок в разных случайных направлениях. Каждый кадр. А каждая трассировка — это очень и очень дорого.

Временное решение
Получение таких "размазанных" отражений от шероховатого пола возможно только благодаря большому числу трассировок

Но - рррраз! - на помощь приходит темпоральная репроекция. И мы на каждом кадре делаем не 30 трассировок на точку, а всего лишь 5. В случайных направлениях. На следующем кадре мы делаем их тоже 5, но уже в других направлениях. И на следующем. И на следующем.

Соотношение 10/90 позволяет эффективно аккумулировать изображения из 6 кадров. Поэтому на итоговой картинке благодаря репроекции отражения будут выглядеть так, будто они получены 30 трассировками. В то время как в реальности они обходятся в 6 раз дешевле.

То же самое проделывается для расчета рассеянного освещения. Для расчета Global Illumination. Для сглаживания теней. Для сглаживания всей картинки в целом. Для всего почти. А для того, для чего репроекция не используется, надо придумать, как использовать. Потому что очень уж эффективно.

И все благодаря технологии, вся суть которой заключена в одной простой математической операции.

Правда, к ней потом добавляется чёртова прорва подпорок и костылей, которая позволяет ей работать с движущимися, анимированными и прочими объектами, а также не порождать целое семейство темпоральных багов.

Но это уже совсем другая история.

Оставить комментарий

Архив записей в блогах:
В середине VII столетия между Кубанью и Днепром процветало государство Великая Болгария. Но недолог был его век. После смерти своего основателя государство рассыпалось на части, а его население рассеялось по континенту. Родиной болгар (в древней историографии - протоболгары или ...
Каждая женщина должна помнить: обеды будут вкуснее, если их готовить реже. Фотограф Анатолий Васильев ...
Вчера был написан пост, про "школы-тюрьма" в СССР. И еще было плохо написано про учителей СССР. Там было написано, что профессия учителя деградировала именно в советское время. Я бы сказал, что деградации вообще ни какой не было и в 90-е. Когда я учился на всю школу, даже строгих ...
Всем привет! Меня зовут Ирина, мне 25 лет. Я живу в славном городе Тирасполе – столице непризнанной Приднестровской Молдавской Республики. И совсем у нас тут не горячая точка, и не ходим мы здесь с пистолетами в карманах, как многие думают. Но в ...
Весна 2013. Зато весело =) Детская площадка =) Обратите внимание на уровень на котором висят скворечники. Тут дети сидят на снегу, а вот я стою в полный рост и есть куда проваливаться еще, просто снег слишком плотный. А это просто картинка которую я когда-то ...