Программный рендеринг - Software rendering

Программный рендерер, работающий на устройстве без GPU.

Программный рендеринг это процесс создания изображения из модели с помощью компьютерного программного обеспечения. В контексте рендеринг компьютерной графики, программный рендеринг относится к процессу рендеринга, который не зависит от графическое оборудование ASIC, например видеокарта. Рендеринг происходит полностью в ЦПУ. Рендеринг всего с помощью (универсального) ЦП имеет главное преимущество, заключающееся в том, что он не ограничивается (ограниченными) возможностями графического оборудования, а недостатком в том, что для достижения той же скорости требуется больше полупроводников.

Рендеринг используется в архитектуре, симуляторах, видеоиграх, фильмах и телевизионных визуальных эффектах и ​​визуализации дизайна. Рендеринг - это последний шаг в процессе анимации, который дает окончательный вид моделям и анимации с помощью визуальных эффектов, таких как затенение, наложение текстуры, тени, отражения и размытие при движении.[1] Рендеринг можно разделить на две основные категории: рендеринг в реальном времени (также известный как онлайн-рендеринг) и предварительный рендеринг (также называемый офлайн-рендерингом). Рендеринг в реальном времени используется для интерактивного рендеринга сцены, как в 3D компьютерные игры, и обычно каждый кадр должен быть отрисован за несколько миллисекунд. Автономный рендеринг используется для создания реалистичных изображений и фильмов, где для завершения каждого кадра могут потребоваться часы или дни, или для отладки сложного графического кода программистами.

Программный рендеринг в реальном времени

При рендеринге в реальном времени основное внимание уделяется производительности. Самые ранние программные рендеры с отображением текстуры в реальном времени для ПК использовали множество уловок для создания иллюзии трехмерной геометрии (истинное 3D был ограничен квартирой или Затушеванный по Гуро полигоны работает в основном в авиасимуляторы.) Ultima Underworld, например, разрешили ограниченную форму взгляда вверх и вниз, наклонные полы и комнаты над комнатами, но прибегали к спрайты для всех детализированных объектов. Технология, используемая в этих играх, в настоящее время классифицируется как 2.5D.

Одна из первых игр, архитектурно схожая с современными 3D-играми, позволяющая полностью 6DoF, был Спуск, который показал 3D модели полностью сделан из растрового изображения текстурированный треугольные многоугольники. Воксель графика на основе также приобрела популярность для быстрого и относительно детального рендеринга ландшафта, как в Delta Force, но популярный фиксированная функция оборудование в конечном итоге сделало его использование невозможным. Землетрясение имеет эффективный программный рендерер Майкл Абраш и Джон Кармак. Благодаря своей популярности, Землетрясение и другие полигональные 3D-игры того времени помогли продажам видеокарты, и многие игры начали использовать оборудование API подобно DirectX и OpenGL. Хотя программный рендеринг не стал основной технологией рендеринга, во многих играх даже в 2000-х годах программный рендерер все еще использовался в качестве запасного варианта. Нереально и Нереальный Турнир например, есть программные рендеры, способные обеспечить хорошее качество и производительность на процессорах того периода. Один из последних ААА игры без аппаратного рендерера было Изгой, в котором используется передовая технология вокселей, но также Фильтрация текстур и рельефное отображение как на графическом оборудовании.

в игровая приставка и аркадная игра На рынках развитие 3D было более резким, поскольку они всегда в значительной степени полагались на специализированные чипсеты. 16-битные консоли получили картриджи ускорителя RISC в таких играх, как StarFox и Virtua Racing который реализовал программный рендеринг с помощью индивидуальных наборов инструкций. В Ягуар и 3DO были первыми консолями с 3D-оборудованием, но только Игровая приставка что такие функции стали использоваться в большинстве игр.

В играх для детей и случайных геймеров (использующих устаревшие системы или системы, предназначенные в первую очередь для офисных приложений) в период с конца 1990-х до начала 2000-х годов обычно использовался программный рендерер в качестве запасного варианта. Например, История игрушек 2: Базз Лайтер приходит на помощь может выбрать аппаратный или программный рендеринг перед игрой, в то время как другим нравится Период полураспада по умолчанию используется программный режим, и его можно настроить для использования OpenGL или DirectX в меню «Параметры». В некоторых программах для 3D-моделирования также есть программные средства визуализации для визуализации. И наконец подражание и проверка аппаратного обеспечения также требуется программный рендерер. Примером последнего является Direct3D эталонный растеризатор.

Но даже для высококачественной графики «искусство» программного рендеринга еще не полностью исчезло. Хотя ранние графические карты были намного быстрее программных средств визуализации и изначально обладали лучшим качеством и большим количеством функций, разработчик ограничивался обработкой пикселей с фиксированной функцией. Вскоре возникла потребность в разнообразии внешнего вида игр. Программный рендеринг не имеет ограничений, поскольку выполняется произвольная программа. Таким образом, видеокарты вновь представили эту возможность программирования, выполняя небольшие программы за вершина и за пиксель /фрагмент, также известный как шейдеры. Языки шейдеров, такие как Язык шейдеров высокого уровня (HLSL) для DirectX или Язык шейдинга OpenGL (GLSL), являются C -подобные языки программирования для шейдеров и начинают показывать некоторое сходство с программным рендерингом (произвольная функция).

С момента принятия графического оборудования в качестве основного средства для рендеринга в реальном времени производительность ЦП постоянно росла. Это позволило появиться новым программным технологиям рендеринга. Несмотря на то, что некоторые современные программные рендереры реального времени в значительной степени затмеваются производительностью аппаратного рендеринга, им удается сочетать широкий набор функций и разумную производительность (для программного рендерера) за счет использования специализированных динамическая компиляция и расширенные расширения набора инструкций, такие как SSE. Хотя в настоящее время преобладание аппаратного рендеринга над программным рендерингом неоспоримо из-за беспрецедентной производительности, функций и постоянных инноваций, некоторые считают, что процессоры и GPU так или иначе сойдутся, и грань между программным и аппаратным рендерингом исчезнет.[2]

Резервное программное обеспечение

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

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

  • Инструменты игры RAD «Pixomatic», продается как промежуточное ПО, предназначенное для статического связывания внутри клиентского ПО D3D 7–9.
  • SwiftShader, библиотека, продаваемая как промежуточное программное обеспечение, предназначенное для объединения с клиентским программным обеспечением D3D9 и OpenGL ES 2.
  • Рендереры swrast, softpipe и LLVMpipe внутри Меса работают как прокладка на системном уровне для эмуляции аппаратного устройства 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's RenderMan, например, позволяет создавать шейдеры неограниченной длины и сложности, требующие универсального процессора. Техники высокого реализма, такие как трассировка лучей и глобальное освещение также по своей сути не подходят для аппаратной реализации и в большинстве случаев реализованы исключительно в программном обеспечении.

Смотрите также

Рекомендации

  1. ^ «LIVE Design - Интерактивные визуализации | Autodesk». Архивировано из оригинал 21 февраля 2014 г.. Получено 2016-08-20.
  2. ^ Валич, Тео (2012-12-13). "Тим Свини, часть 2:" DirectX 10 - последний актуальный графический API "| TG Daily". TG Daily. В архиве из оригинала 4 марта 2016 г.. Получено 2016-11-07.