ПОЛНОЭКРАННОЕ ВИДЕО БЕЗ ТОРМОЗОВ

Дениc Овсянников

Спецвыпуск Xakep, номер #034, стр. 034-064-1

(www.ovideo.ru)

Графические акселераторы изнутри

Эпоха CGA, EGA, VGA и даже SVGA ушла безвозвратно, 1024х768хTrue Color - минимум по умолчанию. HDTV стучится в дверь, а впереди разрешение 1920х1080. При больших разрешениях (близких к 1600х1200) многие игры с качественной графикой тормозят. Устранить тормоза позволяют современные 3D ускорители.

ВВЕДЕНИЕ

Традиционный путь отображения 3D объектов - это сетчатая структура из полигонов, обычно многоугольников. Чем больше многоугольников разной фактуры отображается, тем качественнее получается изображение. При стандартном подходе все операции по визуализации выполняет процессор. Умные люди предложили альтернативный вариант: все операции по просчету цвета и яркости, местоположения каждого пиксела и всей 3D композиции выполняет видеоускоритель. Вершины полигонов, характеристики пространства, область и место обзора, источники света и общий фон выгружаются для обработки в память 3D карты. Затем ускоритель производит оптимизацию по 3D. Процессор в это время остается свободным для выполнения других задач.

На сегодня самыми востребованными языками программирования трехмерных структур являются OpenGL и Direct3D. Графический процессор берет на себя всю "черную" работу по визуализации из графических примитивов и чертежей в самое что ни на есть реальное кино. Впрочем, есть одно но. Каждая версия Direct3D добавляет новые возможности, которые лениво перетекают в новомодные графические ускорители. Чтобы как-то сгладить этот не совсем адекватный процесс, была создана программа Шейдер. С ее помощью аниматор сможет без особых проблем конструировать новые спецэффекты, используя аппаратные ресурсы современных 3D видеоускорителей. Существует многообразие шейдеров: пиксельные шейдеры (для обработки точек), вершинные шейдеры, адресные и цветовые шейдеры. Например, вершинный шейдер может содержать 128 инструкций и использовать до 96 констант в описании.

ПИКСЕЛЬНЫЕ И ВЕРШИННЫЕ ШЕЙДЕРЫ

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

OpenGL

Это кросс-платформенная технология, задающая стандарт 3D генерации и 3D ускорений в просчетах для программ трехмерного моделирования. Программные модули реального времени имеются во всех версиях систем Windows, Linux и Unix. Наличие аппаратной поддержки OpenGL у ускорителя позволяет значительно сэкономить ресурсы процессора.

На сегодня большинство программ, и в особенности игр, используют в своей работе огромные массивы данных, которые обрабатываются технологией OpenGL в реальном времени (аппаратным ускорителем геометрии пространства - свет, масштабирование, рендеринг). OpenGL прописывает стандарты по ускорению визуализации мелких деталей, специальные спецэффекты к изображению без ухудшения производительности, включая туман, сглаживание, текстурирование, размытие в движении, прозрачность, отражение, 3D текстуры, объем пространства в реальном времени и т.п.

Содержание  Вперед на стр. 034-064-2
ttfb: 3.0019283294678 ms