Программирование графических процессоров с использованием Direct3D и HLSL


Предмет, задачи и применение машинной графики


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

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

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

В задачи компьютерной графики входит синтез (воспроизведение) изображения, когда в качестве исходных данных выступает смысловое описание объекта (образа). Простейшие примеры задач компьютерной графики: построение графика функции одной переменной y=f(x) , визуализация процесса вращения трехмерного тела (куб, тетраэдр и т.д.), синтез сложного рельефа с наложением текстуры и добавлением источника света. Здесь также можно выделить бурно развивающуюся в настоящее время интерактивную компьютерную графику. Это система, с которой пользователь может вести "диалог" на уровне команд.
Примерами могут быть всевозможные системы автоматизированного проектирования (САПР), геоинформационные системы (ГИС), компьютерные игры.

Обработка изображений представляет собой направление, в задачах которого в качестве входной и выходной информации выступают изображения (матрицы пикселей). Примеры подобных задач: увеличение/уменьшение яркости в изображении, получение изображения в оттенках серого (grayscale), повышение контраста, устранение шумовых элементов, размытие изображения, выделение границ на изображении и др. Причем количество выходных изображений может быть больше одного, например, восстановление трехмерной модели фигуры (тела) по ее проекциям.

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

Эти три направления можно представить следующей таблицей.

Основные задачи
Синтез изображенийАнализ изображенийОбработка изображений
ВходФормальное описание, графические указания, команды оператора (пользователя)Визуальное представлениеВизуальное представление
ВыходВизуальное представлениеФормальное описаниеВизуальное представление
ЦелиГенерация и представление изображенийРаспознавание образов, структурный анализ, анализ сценПовышение качества изображений
Как научную и учебную дисциплину машинную графику можно считать одним из специальных разделов информатики. Теория машинной графики развивается на базе взаимных связей информатики с другими науками и учебными дисциплинами, такими, как начертательная, проективная, аналитическая и дифференциальная геометрии, топология, черчение, вычислительная математика, операционные системы и языки программирования.


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

Машинная графика становится все более доступным и популярным средством общения человека с компьютером. Знание азов компьютерной графики и умение их использовать на простейшем бытовом уровне становится неотъемлемыми элементами грамотности и культуры современного человека.

Машинная графика широко применяется в системах автоматизированного проектирования (САПР) различных изделий. Конструкторы средствами машинной графики получают чертежи отдельных типовых деталей и сборочные чертежи узлов. Используя различные манипуляторы, инженеры могут многократно изменять виды и конструктивные характеристики проектируемого изделия.

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

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

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



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

Метрическая точность и высокая скорость изготовления машинных чертежей обуславливает их широкое применение в картографии и топографии.

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

Художники и режиссеры создают с помощью компьютеров не только заставки для кино и телепередач, но и компьютерные фильмы, восхищая зрителя фейерверками красок, форм, фантазии, скорости и звуков.

Машинная графика широко используется в компьютерных играх, развивающих у человека фантазию, изобретательность, логику, скорость реакции и любознательность. Современные компьютерные игры своей популярностью обязаны именно машинной графике.

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

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



Следует отдельно отметить область, которая сейчас проникла во все сферы человеческого бытия. Речь идет о трехмерной (3D) графике как подразделе компьютерной графике в целом.

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

В процессе формирования изображений присутствует по крайней мере две сущности: объект и наблюдатель (камера). Объект существует в пространстве независимо от кого-либо. В компьютерной графике имеют дело, как правило, с воображаемыми объектами. Любая система отображения должна обладать средствами формирования изображений наблюдаемых объектов. В качестве такого средства может выступать человек или фотокамера. Именно наблюдатель формирует изображение объектов. Хотя и наблюдатель и наблюдаемый объект существуют в одном и том же трехмерном мире, создаваемое при этом изображение получается двухмерным. Суть процесса формирования изображения и состоит в том, чтобы, зная положение наблюдателя и положение объекта, описать (синтезировать) получаемое при этом двухмерное изображение (проекцию).

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



Взаимодействие между прикладной программой и графической системой – это множество функций, которые в совокупности образуют графическую библиотеку. Спецификация этих функций и есть то, что обычно называют интерфейсом прикладного программирования (API – application programmer’s interface). Для программиста, занимающегося разработкой прикладной программы, существует только API, и он избавлен от необходимости вникать в подробности работы аппаратуры и программной реализации функций графической библиотеки.



Существует много различных API: OpenGL, PHIGS, Direct3D, VRML, JAVA3D. В составе любого API должны присутствовать функции, которые позволяли бы описывать следующие сущности трехмерной сцены:

  • Объекты;
  • Наблюдателя (камеру);
  • Источники света;
  • Свойства материалов объекта.




Для описания объектов чаще всего используют массивы вершин. Изначально объект представляется в виде набора точек или значений координат в трехмерной координатной сетке. В большинстве API (графических библиотеках) в распоряжение пользователя предоставляется практически один и тот же набор примитивов. Типовой набор включает точки, отрезки прямых, треугольники, многоугольники, а иногда и текст.

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

  • Положение камеры задается положением центра проекции;
  • Ориентация. Расположив центр проекции в определенной точке пространства, можно совместить с ним начало локальной системы координат камеры и вращать ее относительно осей этой системы координат, изменяя таким образом ориентацию объекта;
  • Фокусное расстояние объектива камеры фактически определяет размер изображения на плоскости проекции;
  • Размеры (высота и ширина) задней стенки камеры.


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

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


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



  • Геометрические преобразования

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

  • Отсечение

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

  • Проективное преобразование

    Как правило, при обработке геометрической информации трехмерное описание объектов стараются сохранить как можно дольше по мере продвижения по "по конвейеру".


    Но после стадий геометрических преобразований и отсечения неизбежно наступает момент, когда те объекты, которые попадают в поле видимости, нужно преобразовать из трехмерной формы в двухмерную. Существует множество видов проективного преобразования, некоторые из которых позволяют использовать математический аппарат операций с матрицами размером 4x4.

  • Растровое преобразование

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



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


Содержание раздела