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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Архив записей в блогах:
Я все-таки связался - хотя и не лично и опосредовано - с Лаймой. Все, что было ранее в этом тексте - неверно. Приношу измнения всем. И ей в первую очередь. Приведенная здесь цитата о том, что она находится в Израиле, была с сообщения, которое было ...
Наткнулась на один комментарий к этому посту - https://sorella.livejournal.com/290611.html Комментатор пишет, что в свое время он так уехал на заработки на год и ему было пох@й на мнение своей жены. Пох@й на мнение своей жены. Мне кажется, он эту фразу прям с гордостью писал. ...
Конечно есть люди, которые этого не знали. Они, возможно, другое учили. И они виновны меньше. Но вот те, кто это знал с детства- виновны по полной, с отягчающими. Имхо Время руинцев кончается. Бандера всех, кого мог, поднял и они погибли, к его радости. Больше этот миф никого не отыщет ...
День ВДВ в отдельно взятом парке в Москве.Сегодня праздновали очень тихо, по-домашнему. Пришли семьями. Не знаю, то ли жара так повлияла на десантников, то ли администрация парка, закрывшая все палатки и даже туалеты, но 80-летие ВДВ отметили куда ...
Дарвин посрамлён, люди изобрели собаку лучше чем это сделала природа. Эта собака никогда не будет жаловаться на жизнь собачью, а значит, никого не будет кусать без разрешения. Её не надо кормить вонючими консервами и выводить два раза в день гулять. И она будет вас любить так, как ...