Программный рендеринг
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Программный рендеринг — это процесс создания изображения из модели с помощью компьютерного программного обеспечения. В контексте рендеринга компьютерной графики программный рендеринг относится к процессу рендеринга, который не зависит от графического оборудования ASIC , такого как видеокарта . Рендеринг происходит полностью в процессоре . Рендеринг всего с помощью ЦП (общего назначения) имеет основное преимущество, заключающееся в том, что он не ограничивается (ограниченными) возможностями графического оборудования, но недостатком является то, что для получения той же скорости требуется больше транзисторов.
Рендеринг используется в архитектуре, симуляторах, видеоиграх, визуальных эффектах фильмов и телевидения, а также в визуализации дизайна. Рендеринг — это последний этап процесса анимации, который придает окончательный вид моделям и анимации с помощью визуальных эффектов, таких как затенение, наложение текстур, тени, отражения и размытие изображения. [ 1 ] Рендеринг можно разделить на две основные категории: рендеринг в реальном времени (также известный как онлайн-рендеринг) и предварительный рендеринг (также называемый автономным рендерингом). Рендеринг в реальном времени используется для интерактивного рендеринга сцены, как в компьютерных 3D-играх , и обычно каждый кадр должен рендериться за несколько миллисекунд. Автономный рендеринг используется для создания реалистичных изображений и фильмов, где создание каждого кадра может занять часы или дни, или для отладки программистами сложного графического кода.
Программный рендеринг в реальном времени
[ редактировать ]При рендеринге в реальном времени основное внимание уделяется производительности. Самые ранние программные средства рендеринга в реальном времени с отображением текстур для ПК использовали множество приемов для создания иллюзии трехмерной геометрии ( настоящее 3D ограничивалось плоскими полигонами или с закраской по Гуро, полигонами используемыми в основном в авиасимуляторах ). Ultima Underworld , например, допускала ограниченную форму. смотреть вверх и вниз, наклонные полы и комнаты над комнатами, но прибегал к спрайтам для всех детализированных объектов. Технология, используемая в этих играх, на данный момент относится к категории 2.5D .
Одной из первых игр, архитектурно похожих на современные 3D-игры и допускающих полное 6DoF , была Descent , в которой использовались 3D-модели, полностью состоящие из растровых текстурированных треугольных многоугольников. вокселей Графика на основе также приобрела популярность благодаря быстрому и относительно детализированному рендерингу местности, как в Delta Force , но популярное оборудование с фиксированными функциями в конечном итоге сделало ее использование невозможным. В Quake используется эффективный программный рендерер, созданный Майклом Абрашем и Джоном Кармаком . Благодаря своей популярности Quake и другие полигональные 3D-игры того времени помогли продажам видеокарт , и все больше игр начали использовать аппаратные API , такие как DirectX и OpenGL . Хотя программный рендеринг перестал быть основной технологией рендеринга, во многих играх даже в 2000-х годах программный рендеринг все еще использовался в качестве запасного варианта. Например, Unreal и Unreal Tournament представляли собой функциональные программные рендереры, способные обеспечить приятное качество и производительность на процессорах того периода. Одной из последних AAA-игр без аппаратного рендеринга была Outcast , в которой использовались передовые технологии вокселей, а также фильтрация текстур и рельефное отображение, как на графическом оборудовании.
На рынках игровых консолей и аркадных игр эволюция 3D была более резкой, поскольку они всегда в значительной степени полагались на одноцелевые чипсеты. 16-битные консоли получили картриджи-ускорители RISC в таких играх, как StarFox и Virtua Racing , которые реализовали программный рендеринг с помощью специальных наборов инструкций. Jaguar PlayStation и 3DO были первыми консолями, оснащенными 3D-оборудованием, но только в такие функции стали использоваться в большинстве игр.
В играх для детей и обычных геймеров (которые используют устаревшие системы или системы, в основном предназначенные для офисных приложений) в конце 1990-х - начале 2000-х годов в качестве запасного варианта обычно использовался программный рендерер. Например, в «Истории игрушек 2: Базз Лайтер спешит на помощь» перед игрой можно выбрать аппаратный или программный рендеринг, в то время как в других играх, таких как Half-Life, по умолчанию используется программный режим, и их можно настроить на использование OpenGL или DirectX в меню «Параметры». . Некоторые программы для 3D-моделирования также оснащены программными средствами визуализации для визуализации. И, наконец, для эмуляции и проверки оборудования также требуется программный рендерер. Примером последнего является эталонный растеризатор Direct3D .
Но даже для высококачественной графики «искусство» программного рендеринга не вымерло полностью. Хотя ранние видеокарты были намного быстрее, чем программные средства рендеринга, изначально имели лучшее качество и больше функций, они ограничивали разработчика обработкой пикселей с «фиксированной функцией». Быстро возникла необходимость разнообразить внешний вид игр. Программный рендеринг не имеет ограничений, поскольку выполняется произвольная программа. Таким образом, видеокарты вновь представили эту возможность программирования, выполняя небольшие программы для каждой вершины и для каждого пикселя / фрагмента , также известные как шейдеры . Языки шейдеров, такие как язык шейдеров высокого уровня (HLSL) для DirectX или язык шейдеров OpenGL (GLSL), являются C -подобными языками программирования для шейдеров и начинают проявлять некоторое сходство с программным рендерингом (произвольной функции).
С тех пор, как графическое оборудование стало основным средством рендеринга в реальном времени, производительность процессора стабильно росла, как никогда. Это позволило появиться новым технологиям программного рендеринга. Несмотря на то, что некоторые современные программные средства рендеринга в реальном времени в значительной степени омрачены производительностью аппаратного рендеринга, им удается сочетать широкий набор функций и разумную производительность (для программного рендеринга), используя специализированную динамическую компиляцию и расширенные расширения набора команд, такие как SSE . Хотя в настоящее время доминирование аппаратного рендеринга над программным рендерингом неоспоримо из-за беспрецедентной производительности, функций и постоянных инноваций, некоторые полагают, что процессоры и графические процессоры так или иначе сойдутся, и грань между программным и аппаратным рендерингом исчезнет. [ 2 ]
Резервное программное обеспечение
[ редактировать ]По различным причинам, таким как сбой оборудования, сломанные драйверы, эмуляция, обеспечение качества, программирование программного обеспечения, конструкция оборудования и аппаратные ограничения, иногда полезно позволить ЦП взять на себя некоторые или все функции графического конвейера.
В результате существует ряд пакетов программного обеспечения общего назначения, способных заменить или дополнить существующий аппаратный графический ускоритель, в том числе:
- RAD Game Tools 'Pixomatic, продается как промежуточное программное обеспечение, предназначенное для статического связывания внутри клиентского программного обеспечения D3D 7–9.
- SwiftShader — библиотека, продаваемая как промежуточное программное обеспечение, предназначенная для комплектации с клиентским программным обеспечением D3D9 и OpenGL ES 2.
- Средства рендеринга swrast, softpipe и LLVMpipe внутри Mesa работают как прокладка на системном уровне для эмуляции аппаратного устройства OpenGL 1.4–3.2.
- WARP , предоставляемый Microsoft начиная с Windows Vista, который работает на системном уровне, обеспечивая быструю эмуляцию D3D 9.1 и выше. Это в дополнение к чрезвычайно медленному программному эталонному растеризатору, который Microsoft всегда предоставляла разработчикам.
- Программный рендерер Apple на CGL , предоставляемый Apple в Mac OS X и работающий на системном уровне для обеспечения быстрой эмуляции OpenGL 1.1–4.1.
Предварительный рендеринг
[ редактировать ]В отличие от рендеринга в реальном времени, при предварительном рендеринге производительность имеет лишь второстепенное значение. Он используется в основном в киноиндустрии для создания высококачественной визуализации реалистичных сцен. Многие спецэффекты в современных фильмах полностью или частично созданы с помощью компьютерной графики. Например, персонаж Голлума в фильмах Питера Джексона «Властелин колец» полностью создан компьютером (CGI). Компьютерная графика также в анимационных набирает популярность фильмах. В частности, Pixar выпустил серию фильмов, таких как «История игрушек» и «В поисках Немо» , а Blender Foundation — первый в мире открытый фильм «Мечта слонов» .
Из-за необходимости очень высокого качества и разнообразия эффектов автономный рендеринг требует большой гибкости. Несмотря на то, что коммерческое графическое оборудование реального времени с каждым днем становится все более качественным и более программируемым, большинство фотореалистичных CGI по-прежнему требует программного рендеринга. от Pixar RenderMan Например, позволяет создавать шейдеры неограниченной длины и сложности, требуя процессора общего назначения. Методы обеспечения высокого реализма, такие как трассировка лучей и глобальное освещение, также по своей сути не подходят для аппаратной реализации и в большинстве случаев реализуются исключительно программно.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «LIVE Design — Интерактивные визуализации | Autodesk» . Архивировано из оригинала 21 февраля 2014 года . Проверено 20 августа 2016 г.
- ^ Валич, Тео (13 декабря 2012 г.). «Тим Суини, Часть 2: «DirectX 10 — последний актуальный графический API» | TG Daily» . ТГ Дейли . Архивировано из оригинала 4 марта 2016 года . Проверено 7 ноября 2016 г.