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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Архив записей в блогах:
   Мариупольский котёл – завершающая фаза битвы за город, который для неонацистов из запрещённого в России «Азова» чуждй, и родной для бойцов армии ДНР. Отсюда и отношение к Мариуполю тех, кто его освобождает и тех, кто прячась за спинами мирных жителей рушил всё вокруг. И ...
Львовский бездомный по имени Славик за последние два дня буквально взорвал интернет. Точнее, фотосессия украинского фотографа Юрия Дячишина о Славике и его дизайнерском таланте. «Мода Славика» или «Slavik’s Fashion» — это цикл фотографий, демонстрирующих необычную уличную моду бездомного ...
Теракт в Сургуте - третий громкий теракт, который совершают люди, принявшие решение о нем самостоятельно и автономно от любых действующих террористических групп и ячеек. Первый такой теракт был совершен в Грозном в декабре прошлого года, когда группа молодых людей, записав предварительно ...
В виду сложившейся ситуации на рынке труда, ежедневно тысячи людей задаются целью найти подработку в интернете. Популярность подобного заработка обусловлена несколькими причинами. Это возможность работать в домашней обстановке, самостоятельно планировать рабочий график, ...
12:36 / 13.08.2010На прилавки попала колбаса "Вареные дети"В уфимских магазинах появилась новая колбаса под названием "Вареные дети"Все ...