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

 

 

Трехмерная графика, в целом, и компьютерные игры, в частности, наполнены множеством терминов. Практически все публикации на эти темы изобилуют специфическими словами. Данная статья не сделает из вас гуру в 3D-графике, зато поможет разобраться во многих непонятных определениях.

 

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

 

КАК ВСЕ НАЧИНАЛОСЬ


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


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

 

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

 

Вы думаете это настоящие Брюс Уиллис и Моника Белуччи?
Нет – это их виртуальные 3D-модели

 

В 1996 году появляется первый чип для ускорения 3D-графики – VooDoo Graphics производства компании 3Dfx. Совместно с корпорацией Diamond Multimedia начинается серийный выпуск первых 3D-акселераторов для ПК. При использовании 3D-ускорителя существенно снижается нагрузка на центральный процессор, так как обработкой графики теперь занимается специальная микросхема ускорителя, где содержится набор инструкций по построению трехмерных моделей.

 

ГРАФИКА В ИГРАХ

 

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


Чтобы просчитать огромное количество трехмерных моделей, требуются мощные вычислительные ресурсы. Поэтому в полном объеме полигональные "движки" (основа, на которой базируется игра) в то время практически не применялись, а в сочетании с полигональными моделями использовались спрайты. 1992 год стал знаковым, поскольку появился шуттер от первого лица (FPS – First person shooter) – Wolfenstein 3D, написанный компанией id Software. По сути, в этой 3D-игре впервые был смоделирован реалистичный мир, где игрок перемещался в одной плоскости, причем потолок и пол изображались однородными.


Еще одно новшество – текстурирование, когда вместо однотонных граней используются масштабируемые растровые изображения (спрайты). На стены накладывались текстуры с небольшим разрешением, поэтому поверхности хорошо смотрелись лишь на расстоянии. Зато играть в Wolfenstein 3D можно было даже на ПК, оборудованном процессором Intel 80386.


Уже в следующем году выходит очередной шедевр от id Software – DOOM. Теперь игрок перемещается по полностью трехмерному уровню, но при этом монстры и текстуры на поверхностях по-прежнему остаются спрайтовыми. В этой игре увеличились объем и сложность обрабатываемой информации, поэтому пришлось перейти на более мощный процессор (80486).


 

В Wolfenstein 3D детали интерьера и персонажи смотрелись сносно
только на расстоянии


 

Персонажи первой по настоящему трехмерной игры (Quake)
выглядели немного угловатыми


Но все-таки настоящий переворот в области игровой 3D-графики произошел в 1996 году, когда появился Quake производства все той же id Software. Здесь используется полностью полигональный "движок", то есть все объекты просчитываются как трехмерные. В игре применен революционный подход – Z-буфер, благодаря которому удалось придать объемность всем объектам. Но без аппаратной поддержки 3D игра могла работать в невысоком разрешении, и, конечно же, объекты выглядели недостаточно реалистичными.


Интересно, что год выхода Quake (первой по настоящему трехмерной игры) совпал с временем появления первого 3D-ускорителя VooDoo Graphics. Играть в Quake можно было и на обычной 2D-видеокарте. Но разработчики не могли не воспользоваться преимуществами появившихся 3D-акселераторов. Так появилось дополнение, позволявшее использовать преимущества графических ускорителей с поддержкой OpenGL.

 

DirectX – это коллекция API, разработанных для решения различных задач, связанных с программированием под Microsoft Windows. Наиболее широко используется при написании компьютерных игр. DirectX включает в себя API для работы с графикой, устройствами ввода (клавиатуры, мыши, игровые контролеры), звуком и сетевыми коммуникациями. Изначально нацеленный на разработку видеоигр DirectX стал популярен и в других областях программного обеспечения. Первый релиз DirectX был выпущен в сентябре 1995 года и назывался Windows Game SDK.

 

OpenGL (Open Graphics Library – открытая графическая библиотека) – спецификация, определяющая кроссплатформенный программный интерфейс для написания приложений, использующих двумерную и трехмерную компьютерную графику. Он включает в себя множество функций, используемых для рисования сложных трехмерных сцен из примитивов. OpenGL широко применяется в создании видеоигр.

 

В 1992 году компания SGI (Silicon Graphics Incorporated) возглавила OpenGL ARB – группу предприятий по разработке спецификации интерфейса OpenGL, который эволюционировал из 3D интерфейса IRIS GL. Одним из его недостатков было то, что он использовал только функции, заложенные в оборудовании.

 

API ДЛЯ ГРАФИКИ

 

Лавры 3Dfx не давали покоя остальным производителям видеоадаптеров и вскоре в продажу поступили 3D-акселераторы таких компаний, как nVIDIA, S3, Matrox и ATI. Дабы разнообразие графических ускорителей не породило неразбериху среди разработчиков игр и чтобы не оптимизировать отдельно каждую 3D-игру под определенный видеоадаптер, для синхронизации деятельности производителей существует API (Application Programming Interface – интерфейс программирования приложений). Он представляет собой набор методов (функций), которые программист может использовать. API определяет функциональность устройства, при этом позволяет абстрагироваться от того, как именно эта функциональность реализована.


 

Каждая последующая версия DirectX позволяет использовать новые эффекты для достижения большей реалистичности 3D-картинки. Причем в некоторых случаях отличие является довольно существенным. Верхнее изображение смоделировано при помощи возможностей, предоставляемых DirectX 9.0c, а нижняя картинка сформирована с использованием потенциала DirectX 10


Наиболее популярными API для графики являются DirectX и OpenGL. Последний универсален, и имеет версии для Windows, Unix- платформ, PlayStation 3 и Mac OS. В то время как DirectX предназначен только для Microsoft Windows и является базой для Microsoft Xbox API.

 

КОНВЕЙЕР

 

Для отображения трехмерных объектов на экране монитора требуется определенная последовательность операций с последующим преобразованием изображения в двухмерный вид, которая называется конвейером. Данный набор операций выглядит следующим образом. Первоначально объект представляется в виде набора точек, или вершин (vertex), с фиксированными координатами. Трехмерная система координат определяется тремя осями: горизонтальной (x), вертикальной (y) и глубины (z). При помощи вершинных шейдеров над этими точками проводятся дополнительные операции.


На следующем этапе вершины собираются в примитивы – треугольники (полигоны), линии или точки. То есть, фактически мы получаем каркас объекта, где видимыми являются только края поверхностей трехмерного тела. Одновременно определяются области, составляющие поверхности объекта, которые в последствии заполняются цветом, текстурами и освещаются.


Далее информация поступает в пиксельный процессор. Здесь определяются и обрабатываются конечные пиксели, которые будут выведены в кадровый буфер. Над пикселями производятся различные операции: присвоение цвета, затенение, освещение, текстурирование и т.п.


Из-за того что объект разбивается на отдельные фрагменты (пиксели), этот процесс называется растеризацией. Понятие "растровый" означает "состоящий из точек". Далее выясняется глубина (координата z) каждой точки и производится сглаживание(antialiasing) линий. Z-данные помещаются в Z-буфер.

 

На следующем этапе пикселям присваиваются показатели цветности RGBA (где A – alpha – характеристика, обозначающая прозрачность), и эти фрагменты обрабатываются блоком ROP (Raster Operations). Далее, используя данные Z-буфера, отсекаются пиксели, которые будут скрыты другими объектами и не видны пользователю. Точки снова собираются в полигоны, и все обработанное изображение передается в кадровый буфер для последующей выборки и вывода на экран.

 

ШЕЙДЕРЫ

 

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


Шейдер (Shader) – это программа, используемая в трехмерной графике для визуального определения окончательных параметров объекта. Они позволяют создавать различные эффекты на уровне графического ядра видеоадаптера, будь то описание поглощения и рассеивания света, наложения текстуры, отражение и преломление, затенение, смещение поверхности или эффекты постобработки.


 

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

 

Изначально в 3D-акселераторах за поддержку какого-либо эффекта отвечало ядро видеокарты, а точнее его TCL-блок (Transforms Clipping Lighting – трансформация, отсечение и освещение). Поэтому введение новых эффектов происходило довольно медленно. Поскольку реализация была аппаратной, то приходилось ждать очередного поколения видеокарт, которые поддерживали бы этот эффект. А это требовало постоянного расширения графического чипа и переписывания драйвера.

 

На определенном этапе развития 3D-ускорителей фиксированный TCL-блок заменили программируемым (вершинный шейдер – Vertex Shader). Вершинные шейдеры позволяют производить математические операции с вершинами. Они дают возможность изменять параметры вершин и их освещение (T&L – Transform&Lighting). Например, с помощью вершинных шейдеров можно произвести следующие эффекты:

  • скининг (skinning) – скелетная анимация персонажей с большим количеством составляющих (костей);
  • деформация объектов – изменение формы (например, моделирование реалистичных волн);
  • анимация объектов – например, колышущиеся на ветру листья или трава;
  • имитация ткани (Cloth Simulation) – реалистичное моделирование поведения материалов, подобных ткани.

Свечение на нижней картинке реализовано с помощью эффекта Bloom.
Благодаря этому методу постобработки изображение становится более реалистичным


Помимо этого, существуют также пиксельные шейдеры (Pixel Shader), изменяющие процесс обработки текстур. Это программы, выполняемые графическим чипом во время растеризации для каждого пикселя изображения. Они производят выборку из текстур или математические операции над цветом и значением глубины (Z-буфер) пикселей. Результатом работы пиксельного шейдера является конечное значение цвета пикселя и Z-значение глубины.


Используя пиксельные шейдеры можно достичь следующих эффектов:

  • мультитекстурирование – смешение нескольких текстур с последующим наложением результата вычисления на пиксель (например, совмещение основной текстуры пикселя и степени освещенности);
  • попиксельное освещение (Bump mapping и улучшенная версия Normal mapping) – для каждого пикселя поверхности отдельно выполняется вычисление освещения, что позволяет получить более натуральное изображение поверхности. Этот эффект улучшает детализацию поверхности, при этом геометрически модель не усложняется, так как расчеты ведутся на пиксельном уровне;
  • процедурные текстуры (Procedural Textures) – это текстуры, которые описываются математическими формулами. Они не занимают места в видеопамяти и создаются пиксельным шейдером "на лету". Каждый элемент текстуры (тексель) получается в результате исполнения соответствующих команд шейдера. Например, существуют следующие процедурные текстуры: дерево, вода, лава, дым, огонь и т.п.;
  • постобработка (Postprocessing) – это эффекты, которые накладываются на уже сформированное растровое изображение. Наиболее популярными эффектами постобработки являются Depth Of Field, Bloom, Motion Blur.
  • Depth Of Field (глубина резкости) – это "размывание" объектов в зависимости от их положения относительно фокуса камеры. При формировании 3D-сцены каждый объект изображения идеально четкий. В реальности же мы видим четким то, что находится в фокусе, а остальные предметы (находящиеся ближе или дальше) размываются. Для достижения реалистичности 3D-изображения приходится применять специальные алгоритмы.
  • Bloom (свечение) – этот эффект происходит из кинематографа. Самые яркие участки изображения делаются еще более яркими. Эффект проявляется в виде свечения, причем определенные участки изображения не только получают дополнительную яркость, но их свечение (ореол) частично воздействует и на более темные области, находящиеся по соседству.
  • Motion Blur (смазывание в движении) – при трехмерной анимации объекты в каждом кадре расположены по определенным координатам и четко прорисовываются. Поэтому смазывание, подобное тому, что видит человеческий глаз при взгляде на быстро движущиеся объекты, отсутствует. Конечно же это выглядит нереалистично данный эффект устраняет этот недостаток.

Может показаться, что объект на нижнем рисунке больше детализирован и имеет более сложную
геометрическую структуру. На самом деле, это та же 3D"модель, что и на верхней картинке,
только обработанная с помощью попиксельного освещения Normal mapping


В DirectX 10 (и соответственно в графических ускорителях, которые поддерживают этот API) появился новый вид шейдеров – геометрические (Geometry Shader). Они позволяют работать с геометрией на уровне примитивов, то есть производить какие-либо операции над треугольниками или линиями целиком, в отличие вершинных шейдеров, которые оперировали отдельными вершинами.


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


Поддержка первой версии шейдеров появилась в DirectX 8. Следующее поколение вершинных и пиксельных шейдеров версии 2.0 было встроено в DirectX 9.0. Самый распространенный на данный момент DirectX 9.0с поддерживает Shader Model 3.0. А в DirectX 10, входящий в состав Windows Vista, интегрированы шейдеры версии 4.0. Версия поддерживаемых шейдеров является одним из основных отличий между графическими ускорителями.


С каждой следующей реализацией Shader Model появляются новые эффекты, позволяющие еще больше детализировать и приблизить искусственное 3D-изображение к реальному. Ожидается, что качество картинки в новых играх, написанных с использованием DirectX 10, практически вплотную приблизится к кинематографическому. И кто знает, может быть совсем скоро, включив компьютер, нам будет уже трудно понять, в каком мире мы находимся – реальном или виртуальном.


Практически во всех современных 3D-играх и тестах 3D-графики в настройках качества изображения присутствуют такие параметры, как "Анизотропная фильтрация" и "Сглаживание". Но не все знают, что эти термины означают.

 

Анизотропная фильтрация (Anisotropic Filtering, AF) – это метод улучшения качества изображения текстур на поверхностях, которые далеко располагаются и сильно наклонены относительно камеры в трехмерной графике. Анизотропная фильтрация – более эффективный инструмент, нежели предшествующие ей билинейная (Bi-Linear Filtering) и трилинейная (Tri-Linear filtering) фильтрации. Однако при этом она требует больших вычислительных ресурсов. Данный метод позволяет устранять ступенчатости на поверхностях, но делает это не столь успешно, как сглаживание.

 

Сглаживание (Anti4aliasing, АА) – удаление ступенчатости отображения наклонных линий (кривых, окружностей и т.п.) и контуров, которая вызвана недостаточной разрешающей способностью экрана или многократным увеличением растрового изображения. Эффект достигается за счет более плавного перехода от одного цвета к другому.

2007.02.06
19.03.2009
В IV квартале 2008 г. украинский рынок серверов по сравнению с аналогичным периодом прошлого года сократился в денежном выражении на 34% – до $30 млн (в ценах для конечных пользователей), а за весь календарный год – более чем на 5%, до 132 млн долл.


12.03.2009
4 марта в Киеве компания Telco провела конференцию "Инновационные телекоммуникации", посвященную новым эффективным телекоммуникационным технологиям для решения задач современного бизнеса.


05.03.2009
25 февраля в Киеве компания IBM, при информационной поддержке "1С" и Canonical, провела конференцию "Как сохранить деньги в условиях кризиса?"


26.02.2009
18-19 февраля в Киеве прошел юбилейный съезд ИТ-директоров Украины. Участниками данного мероприятия стали ИТ-директора, ИТ-менеджеры, поставщики ИТ-решений из Киева, Николаева, Днепропетровска, Чернигова и других городов Украины...


19.02.2009
10 февраля в Киеве состоялась пресс-конференция, посвященная итогам деятельности компании "DiaWest – Комп’ютерний світ" в 2008 году.


12.02.2009
С 5 февраля 2009 г. в Киеве начали работу учебные курсы по использованию услуг "электронного предприятия/ учреждения" на базе сети информационно-маркетинговых центров (ИМЦ).


04.02.2009
29 января 2009 года в редакции еженедельника "Computer World/Украина" состоялось награждение победителей акции "Оформи подписку – получи приз!".


29.01.2009
22 января в Киеве компания "МУК" и представительство компании Cisco в Украине провели семинар для партнеров "Обзор продуктов и решений Cisco Small Business"

 

 
 
Copyright © 1997-2008 ИД "Комиздат".