Компьютерра - Журнал «Компьютерра» № 13 от 04 апреля 2006 года Страница 15
Компьютерра - Журнал «Компьютерра» № 13 от 04 апреля 2006 года читать онлайн бесплатно
Вычислительная сложность этого алгоритма очень высока, ведь надо проследить путь каждого фотона. Зато он прекрасно параллелится — движение всех частиц абсолютно независимо.
Решение подобной задачи для сложной сцены может занимать много времени, и вполне понятно желание как-то ускорить процесс. По аналогии с 3D-играми и для рейтрейсеров стали появляться акселераторы. Компания Advanced Rendering Technology производит PCI-карту аж с восемью узкоспециализированными процессорами на борту. Она предназначена для профессионального применения и на некоторых задачах позволяет получить ускорение более чем в десять раз.
Мощности современных GPU могут пригодиться не только «тридешникам». Как нельзя кстати они подойдут и для нелинейного монтажа в реальном времени. Рассмотрим самый простой пример — переход между двумя последовательными кадрами, осложненный анимацией. Представьте, допустим, эффект перелистывания страницы, при этом конец первой видеопоследовательности продолжает идти на одной странице, а на другой уже начинается вторая. Нет ничего проще: загружаем кадры на видеокарту, моделируем 3D-сцену с перелистывающимися страницами, устанавливаем камеру и, последовательно выводя на страницы соответствующие кадры, получаем желаемый эффект.
Так же просто реализуются все эффекты взаимопроникновения кадров, но для этого уже лучше использовать пиксельные шейдеры. Можно сделать специальную текстуру перехода и выводить на экран пиксел со второй последовательности кадров, только если значение яркости на текстуре смешения стало меньше, чем номер кадра, деленный на их количество (в сцене перехода). Таким образом, нулевой кадр будет полностью из первой последовательности, последний — из второй, все же остальные будут смешаны из обоих в соответствии с текстурой перехода. Интересный эффект получится, если вместо текстуры перехода использовать одну из последовательностей. Тогда сначала будут заменены самые темные участки изображения, а лишь потом яркие.
На видеокарте можно решать и более сложные задачи совмещения видеопоследовательностей, когда кадр собирается из большого количества слоев и фрагментов. До недавнего времени главным препятствием для массового применения GPU в видеомонтаже было низкое качество рендеринга с узким динамическим диапазоном, но сейчас и эта проблема решена.
Также в киноиндустрии применяется большое количество операций фильтрации — когда значение пиксела заменяется суммой некоторого количества соседних пикселов с определенными весовыми коэффициентами. Подобным образом решаются задачи размытия, выделения границ, увеличения контрастности… да что там говорить, практически все, что может делать Photoshop, — это операции фильтрации. При помощи пиксельных шейдеров эти операции делаются напрямую. Они нужны в первую очередь на этапе обработки изображения после рендеринга. Здесь кроме разнообразной фильтрации применяется цветокоррекция, добавляются разнообразные плоские дымы, снег и осколки. С этим делом прекрасно справляется GPU.
Подводя итог, посмотрим, что может дать GPU киноиндустрии. Во-первых, он может существенно упростить труд моделлера, позволяя интерактивно работать с достаточно сложными моделями. Во-вторых — принципиально ускорить процесс рендеринга. Что позволит или уменьшить время работы над проектом, или улучшить качество финального результата. В-третьих, GPU способен оказать существенную помощь при монтаже, причем не только на стадии проектирования, где видеоускорители обосновались давным-давно, но и при просчете финального результата.
ТЕМА НОМЕРА: Перегнать, не догоняя
Авторы: Алексей Калиниченко, Павел Воронин
В последнее время на рынке появилось множество мониторов, дающих иллюзию трехмерности изображения. Большинство из них используются в паре с очками той или иной конструкции. Однако еще в 2000 году в России был создан дисплей, не требующий никаких дополнительных средств и дающий неплохое качество объемного изображения. Мы встретились и побеседовали с его создателем, старшим научным сотрудником факультета вычислительной математики и кибернетики Московского Государственного университета Андреем Лукьяницей.
Расскажите, пожалуйста, об устройстве вашего стереодисплея.
— Аппарат состоит из двух жидкокристаллических панелей, между которыми помещена специальная маска. Панели подключены к компьютеру, и на них выводятся изображения, рассчитанные с помощью искусственной нейросети. В результате в заданной области перед дисплеем формируется световое поле, которое соответствует трехмерному объекту, находящемуся за экраном. Идея гениально проста. «Гениальна» в том смысле, что проста. Для того чтобы появилось стереоизображение, необходимо, чтобы правый и левый глаза видели разные картинки. Как этого можно добиться? Обычно используют специальные очки: с красным и синим стеклами, поляризационные, shuttering[Очки, поочередно закрывающие правый и левый глаза. При этом на монитор выводится изображение, соответствующее открытому в данный момент глазу] и т. д. А здесь у вас просто есть два изображения, разнесенных по глубине. Когда вы на них смотрите, каждый глаз видит свою картинку (для левого и правого глаза суммируются разные пикселы, так как лучи идут под разными углами).
Это могли придумать несколько веков назад. На CеBIT 2000 мы ехали еще без дисплея. Уже была готовая численная модель, и мы показывали макет: рассчитали картинки, распечатали их на струйном принтере и закрепили канцелярскими зажимами к разнесенным по глубине стеклам. Если рассматривать такую конструкцию с определенного расстояния на свет, то будет видна объемная картинка. Есть довольно смешные фотографии, как наши высокопоставленные чиновники разглядывали такой самодельный «дисплей».
Вы говорили, что между панелями установлена маска. Зачем она нужна?
— Маска — это диффузор. Она необходима для того, чтобы бороться с муаром. Муар-эффект наблюдается при наложении любых регулярных структур: заборов, сетки рабицы и т. п. Его можно наблюдать и дома: например, если посмотреть на тюль, сложенный вдвое.
На LCD-панелях есть различимая черная решетка: на экран наклеена непрозрачная пленка, в которой вырезаны маленькие отверстия по форме пикселов, а промежутки образуют сетку. И когда мы устанавливаем два экрана друг за другом, эти сетки накладываются и появляется муар. (Кстати, сейчас многие производители LCD-панелей создают трудности для нашей технологии: ради улучшения контрастности они увеличивают ширину черной маски между пикселами.) Поэтому мы и устанавливаем диффузор — это такая тонкая пленка, которая слегка размывает изображение с заднего экрана и тем самым убирает тонкие полоски черной межпиксельной решетки. В результате остается только одна сетка (на переднем экране), а значит, решается проблема муара. Кроме того, диффузор значительно увеличивает угол обзора.
А как вы рассчитываете изображения для экранов?
— Для этого решается задача, аналогичная компьютерной томографии. У нас есть стереопара — то есть два изображения, соответствующие тому, что должен видеть каждый глаз. И надо так подобрать картинки для переднего и заднего экранов, чтобы при проецировании они складывались в заданную стереопару. Решение этой задачи — сложная математическая проблема[Здесь возникает так называемое уравнение Фредгольма первого рода. Эта задача некорректна, а ее решение неустойчиво]. Поэтому было решено использовать нейронные сети. Каждому пикселу ставится в соответствие по нейрону, а связи и весовые коэффициенты вычисляются из соображения геометрии прохождения лучей. Нейроны связаны тогда и только тогда, когда через соответствующие им пикселы проходит луч, попадающий в левый или правый глаз. Коэффициенты же подбираются в соответствии с характеристиками используемых LCD-панелей и диффузора.
Такая система позволяет быстро и эффективно вычислять проекции (фактически на каждый пиксель требуется лишь несколько простейших арифметических операций). Теперь, прогоняя заданные картинки через построенную нейронную сеть и сравнивая получаемые изображения с заданной стереопарой, мы при помощи метода последовательных приближений можем с достаточной точностью построить искомые изображения.
И сколько длится просчет одного кадра?
— Сначала алгоритм был реализован на CPU, и расчет одного кадра занимал не меньше двух минут. На современных процессорах все равно будет порядка одной минуты. В любом случае, для приложений реального времени это слишком много.
Лет шесть назад мой коллега, старший научный сотрудник Института высокопроизводительных вычислительных систем РАН Евгений Епихин заметил, что графическая карта имеет более мощный процессор, чем популярный тогда Pentium. В результате мы стали думать, как использовать GPU для нашей задачи. Оказалось, что при использовании нейросети задача идеально ложится на графический процессор. Довольно быстро мы смогли добиться гораздо более высокой производительности системы (около пятнадцати кадров в секунду).
Жалоба
Напишите нам, и мы в срочном порядке примем меры.