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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Архив записей в блогах:
Написал в редакцию журнала "Ракетно-космическое приборостроение и информационные системы" по поводу статьи Е.П.Молотова и Ю.А.Тимофеева. Вот цитата из статьи: "В июле 1969 года мы были направлены в очередной раз в командировку в Симферополь (в Центр управления) для обеспечения работы ...
Наверное, впадаю в детство). Помню, много раз смотрела "Приключения Буратино", тогда мне нравились молодые лягушки, с шумным весельем квакающие вокруг Тортиллы, красивая лирическая мелодия, а словам особого значения не придавала... ...когда-нибудь, через 300 лет , я тоже буду мудрой и ...
Последнее время в нашей жизни слишком много Холмса. Сначала им стал "железный человек" Роберт Дауни младший, потом интернет запестрел афишами теле-Холмса производства ВВС с двумя не очень привлекательными персонажами на фоне типичной ...
Уставший Оптимист Вчера Не успели американцы отбомбиться по сирийским городам Аль-Маядин и Аль-Букамаль, как к ним тут же нагрянули "гости". И не какие-нибудь пустышки, а самые настоящие ракеты. По предварительным данным, в ответ на варварскую агрессию против мирного населения, а ...
  ...