Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
Графика в компьютере. Виды компьютерной графики: фрактальная, растровая, векторная, трехмерная. Форматы графических данных. Цвет и цветовые модели. Видеосистема как часть компьютера. Видеокарта. Виртуальная реальность и ее создание. Тесселяция.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 10.09.2008 |
Размер файла | 393,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
5.2. Шустрый тандем
В последнее время запросы игр настолько увеличилось, что одной видеокарты, даже самой современной, не хватает для вывода максимально реалистической картинки, какую только можно увидеть на экране монитора. Да и графические процессоры имеют просто дикое количество разных конвейеров и в связи с этим потребляют мощности, которые еще пару лет назад считались запредельными. Два видеопроцессора в один чип (как это делают с центральным процессорам,) засунуть производители пока не могут. Поскольку банальное увеличение тактовых частот оперативной памяти и графического процессора уже не давало должного эффекта, было принято решение использовать две видеоплаты в одном компьютере.
Этот прием не нов. Пожалуй, стоит напомнить, что к такому способу несколько лет назад прибегла компания 3Dfx, выпустившая плату Voodoo2, способную работать в режиме SLI (Scan Line Interleave). Эффект от двух Voodoo2 в одном компьютере был просто фантастическим -- почти двукратное увеличение производительности во всех компьютерных играх тех лет. Причем основной упор компания 3Dfx делала не столько на быстродействие, сколько на рабочее разрешение. К моменту появления Voodoo2 в продаже все современные по меркам того времени ускорители трехмерной графики были способны нормально работать только с разрешением 800х600. После выхода нового продукта 3Dfx пользователям стало доступно новое разрешение -- 1024х768. Правда, чтобы им воспользоваться, требовалось установить две платы Voodoo2 в режиме SLI. Данное решение позволило 3Dfx стать лидером «гонки вооружений», развернувшейся в конце девяностых годов прошлого века (до определенного времени).
Но с современными картами просто так это бы не прокатило, потому, что у них такой большой поток данных, что шина с трудом справляется с одной видеокартой. А двух разъемов на материнской плате быть не может, и шина PCI для таких вещей вообще слабовата. Но когда появилась шина PCIE, которая смогла заменить и AGP и PCI , идея двух карт вышла из небытия. Фирма nVidia первой решила использовать этот режим для своих видеокарт. Название так и осталось -SLI. А вот фирма ATI систему из двух карт на основе своих Radeon назвала CrossFire.
Компания NVIDIA выбрала сложный, можно сказать, тернистый путь. В отличие от 3Dfx, которая, выпуская Voodoo2 SLI, исходила из совместимости с имеющимся у пользователей компьютерным оборудованием, NVIDIA воспользовалась совсем иными методами. Во времена 3Dfx все было просто: единственное условие для использования Voodoo2 SLI заключалось лишь в наличии двух слотов PCI, которые присутствовали едва ли не в каждом компьютере. Теперь желающие воспользоваться NVIDIA SLI должны полностью обновить свой компьютер. Придется раскошелиться на новую материнскую плату, выполненную на чипсете NVIDIA nForce4 SLI, блок питания стандарта ATX EPS мощностью около 500 Вт, процессор AMD Athlon 64 в корпусе Socket 939 (или более новый)., а также две абсолютно одинаковые видеоплаты, поддерживающие возможность одновременной работы.
Принцип работы NVIDIA SLI следующий: изображение также делится на две равные части -- верхнюю и нижнюю, каждая из которых обрабатывается одной видеоплатой. Поскольку обе используемые видеоплаты одинаковы, возникает простой вопрос: как же установить их на материнскую плату. Ответ прост: требуется особое решение, имеющее специфическую конструкцию. Согласно всем современным тенденциям, шина PCI Express является теперь основной для всех устройств. К ней подключаются все платы расширения. Пропускная способность (ПС) шины PCI Express определяется числом используемых линий передачи данных. ПС одной линии составляет 250 Мбайт/с. Так, например, сетевой плате или любому другому примитивному устройству вполне хватит одной линии. Видеоплатам по умолчанию отводится 16 линий, что соответствует ПС, равной 4 Гбайт/с. Как известно, сегодня по маркетинговым соображениям и оценкам финансовых затрат при производстве возможности чипсетов с шиной PCI Express серьезно ограничены величиной 20 линий. Из-за этого еще не существует массовых серийных продуктов, имеющих, скажем, 36 линий. Поэтому компании NVIDIA пришлось отталкиваться от 20 линий, которые были поделены разработчиком следующим образом: 8+8+1+1+1+1. То есть обе видеоплаты, работающие в режиме SLI, могут использовать только по 8 линий, что соответствует ПС, равной 2 Гбайт/с.
Помимо этого, чтобы заставить компьютер работать в режиме SLI, требуется также установка специального моста между двумя видеоплатами. Мост поставляется в комплекте с платой и выполняет роль электрического соединения двух групп контактов, размещенных на видеоплатах. Основной функцией моста является связь двух графических процессоров друг с другом. Производительность системы NVIDIA SLI во многом зависит от драйвера видеоплат. Именно драйвер отвечает за правильную балансировку нагрузки между видеоплатами, а также за то, какой из режимов вывода изображения использовать в соответствии с запущенным программным обеспечением. Существует два метода обработки изображений, которыми пользуется драйвер при работе с 3D-приложениями.
При одном методе работы (AFR) видеоизображение, выводимое на монитор, обрабатывается следующим образом. Видеоплаты прорисовывают изображение по очереди. Текущий кадр выводит одна плата, следующий -- другая, и так далее. В том случае, если одна плата не справляется с прорисовкой кадра за отведенный для этого промежуток времени, то ей начинает помогать вторая. Если использовать данный способ рендеринга в такой игре, как, скажем, Doom 3, пользователь не получит увеличения производительности. Все будет работать точно так же или даже медленнее, чем раньше. Более интересным способом обработки информации является другой способ - SFR. При его использовании изображение, выводимое на экран, делится поровну на две части. Каждая из видеоплат обрабатывает лишь свою часть. При этом драйвер следит за нагрузкой на обе видеоплаты, и в том случае, если одна из них простаивает, пропорциональное отношение данных частей экрана изменяется. Одна видеоплата начинает обрабатывать большую часть экрана, чем другая. К сожалению, существующие сегодня драйверы не умеют выбирать режимы работы SLI на лету. Драйвер может лишь выставить режим AFR или SFR до запуска конкретного приложения.
Пользователь в состоянии сделать это самостоятельно или же подгрузить профиль под определенное приложение. По умолчанию драйвер использует режим «AFR». Но далеко не всегда его применение может быть оправданным. Например, если какая-то игра будет использовать медленно прорисовываемый специальный эффект, создаваемый методом наложения нового кадра на несколько медленно исчезающих предыдущих, то с «AFR» пользователь получит, лишь быстро меняющуюся картинку. В связи с этим будет использоваться метод SFR. Но даже в этом случае драйвер должен будет точно определять, сколько кадров отправлять одной видеоплате, а сколько -- другой. Поскольку используются видеоплаты с одинаковыми характеристиками, драйвер точно может определить, в какой пропорции следует делить между ними экран. Во время прорисовки изображения драйве - ром создается журнал событий (History Table), в который заносится информация о загрузке графических процессоров видеоплат при обработке нескольких предыдущих кадров. Отслеживая записи в журнале, драйвер более точно распределяет нагрузку между видеоплатами.
Подводя итоги нашему тестированию, можно сказать, что платформа NVIDIA SLI работает действительно быстро. Возможно, не так быстро, как обещали рекламные буклеты производителей. Но все же SLI на базе, напрмер, двух GeForce 6600 GT работает быстрее, чем любая видеоплата в одиночестве. Проблемы при использовании SLI есть. Основная из них -- потребность в мощном процессоре. Мы использовали самый современный (на данный момент) процессор AMD Athlon FX-55, и его возможностей порой не хватало для многих тестовых пакетов.
Необходимо сразу отметить, что все платы на базе чипсета NVIDIA SLI могут работать как с одной видеоплатой, так и с двумя. В первом случае видеоплате отдается 16 линий, во втором -- 8+8. Причем разделение линий осуществляется не программно, а аппаратно. Для этой цели используется особый переключатель, реализованный в виде отдельной платы. Установив его в специально отведенный слот одной стороной, пользователь получит режим «одна видеоплата, 16 линий». Перевернув его и подключив другой группой контактов, можно осуществить переключение в режим «две видеоплаты, 8+8 линий».
Еще одна проблема современных видеокарт - огромная рассеиваемая (и, естественно, потребляемая) мощность. Проводники на материнской плате уже не справляются. Пришлось на видеокарту поставить еще один разъем - для дополнительного питания. Разъем совершенно стандартный - как на винчестерах. Ну и конечно на видеокартах сейчас ставятся мощные системы охлаждения, включающие в себя, желательно активный кулер. То есть не просто радиатор, а с вентилятором на нем. А бывает еще и водяное охлаждение, но это уже для самых крутых систем.
В современном компьютерном мире двигателем прогресса является индустрия компьютерных игр. С выходом каждой новой игры разработчики стремятся серьезно улучшить детализацию и стараются использовать самые современные технологии. Чтобы вдоволь насладиться игрой, требуется оснащенный по последнему слову техники компьютер. Да и то, как показывает действительность, на момент поступления некоторых игр в продажу возможностей даже самых передовых графических акселераторов может не хватать.
5.3. Монитор
Допустим, видеокарта сформировала в видеобуфере образ картинки, которую надо вывести на экран монитора. Теперь эту картинку надо как-то до монитора донести. Проблема в том, что многие современные мониторы -- аналоговые. А в недалеком прошлом цифровые мониторы (основанные на технологиях плазменных панелей или LCD) были и вовсе редки. Поэтому цифровой сигнал надо как-то преобразовать в аналоговый, понятный монитору. Эту ответственную миссию взял на себя RAMDAC (Random Access Memory Digital to Analog Converter -- цифро-аналоговый преобразователь (ЦАП) с ОЗУ). Кстати, когда-то RAMDAC был единственным компонентом видеокарты.
Давайте разберемся с принципами работы монитора. Если упрощенно, то аналоговый монитор практически ничем не отличается от телевизора -- тот же кинескоп, та же электронная пушка. Поток электронов, вылетающий с анода (положительного электрода) электронной пушки, ударяется в экран, сделанный из специального вещества, и место “приземления” электрона начинает светиться одним из трех основных цветов. Цвет точки зависит от того, в какую ячейку светофильтра теневой или щелевой маски попал электронный луч. Система магнитов отклоняет электронный луч так, чтобы он быстро пробегал по всем строкам экрана и возвращался на место еще до того, как потухнут те точки, который он “зажег” в прошлый раз. Количество отображенных строк в секунду называется частотой строчной развертки. А скорость, с которой луч пробегает один раз весь экран, называется частотой кадровой развертки или просто частотой обновления монитора. Именно ее мы стараемся выбрать побольше, чтобы не болели глаза и не было заметно мелькания изображения.
Для того чтобы нарисовать на экране какую-нибудь картинку, монитор должен получить сигнал, на какой угол отклонять луч в каждый конкретный момент времени (по сути, какое напряжение подавать на отклоняющие магниты) и с какой интенсивностью электронной пушке испускать поток электронов. RAMDAC как раз и занимается тем, что преобразует массив точек картинки из видеобуфера в сигналы, отклоняющие электронный луч. Мониторы нынче пошли умные, и их не надо “водить за ручку”. Поэтому вместо детальных указаний, как каждой конкретной детали монитора работать, RAMDAC через VGA-кабель передает только RGB-сигнал (то есть три составляющих цвета: R -- красную, G -- зеленую и B -- синюю) и сигнал синхронизации, чтобы монитор “не сбился с ритма”.
От работы RAMDAC напрямую зависит качество изображения. Если с этим компонентом видеокарты возникли проблемы или же он просто некачественный, картинка может выглядеть замыленной, мутной и даже дергающейся. В разных разрешениях и при разных частотах обновления экрана частота RAMDAC должна быть разной. Например, в разрешении 800х600 и при частоте обновления 80 Гц из RAMDAC нужно выжать всего-то 50 Гц. А в разрешении 1600х1200 и с частотой обновления 100 Гц требования гораздо выше: частота регенерации должна быть не меньше 250 Гц.
Прогресс не стоит на месте, жидкокристаллические мониторы и плазменные панели все прочнее входят в наш быт. Но видеокарта их встречает не очень приветливо. Судите сами. Это полностью цифровые устройства, и им нужен цифровой сигнал. Однако RAMDAC видеокарты преобразует изначально цифровой сигнал в аналоговый. Значит, LCD-монитору придется прибывший сигнал снова преобразовывать в цифровой. Такое двойное преобразование видеосигнала влечет за собой кучи проблем и плохо сказывается на качестве картинки. Зачем огород городить, решили инженеры и предложили добавить видеокарте еще один выход. Через него устройства, которым это нужно, смогут получать прямой цифровой сигнал в обход RAMDAC. Это сразу повысит качество изображения в разы и удешевит (!) стоимость производства цифровых мониторов. Сказано -- сделано, и миру явился стандарт DVI (Digital Video Interface) -- цифровой видеоинтерфейс.
Сейчас немного о мониторах. Еще совсем недавно была очень большая разница между аналоговыми и цифровыми мониторами. Если цифровые мониторы считались безопасными и экологичными (менее вредными для глаз и т.д.), то аналоговым отдавалось безусловное первенство по качеству воспроизведения картинки на экране и, особенно по цветопередаче, что очень важно для профессионалов. Теперь такой большой разницы нет, и дорогие цифровые мониторы давно применяются дизайнерами, фотографами и прочими представителями подобных профессии. С другой стороны, категории безопасности аналоговых мониторов все ужесточаются. Сейчас в связи с увеличением мощностей процессора и видеокарты, когда стало возможным делать играбельным изображение с большим разрешением, массовыми становятся уже 19-дюймовые мониторы.
6. Введение в виртуальную реальность
Как так получается, что на экране оживает почти настоящий, реальный мир, да еще и в 3D? Люди, которые в первый раз встречаются с интерактивным 3D, обычно испытывают шок. Увиденное не вписывается ни в какие их представления о современных достижениях науки и техники. И хотя им показываешь “Властелина колец” и говоришь, что многие сцены фильма сделаны на компьютере, -- их это не особо впечатляет. По своей наивности они думают, что все по-прежнему делается рисованной мультипликацией. Но увидят они какой-нибудь столетний Doom -- и поражаются.
Не важно, насколько большим и насыщенным будет виртуальный 3D мир. Компьютер может отображать его только одним способом: помещая пиксели на 2D экран. Как изображение на экране становится реалистичным, и как сцены становятся похожими на те, которые мы видим в реальном мире? Сначала мы посмотрим, как придается реалистичность одному объекту. Потом мы перейдем уже ко всей сцене. И напоследок, мы рассмотрим, как компьютер реализует движение: реалистичные объекты движутся с реалистичными скоростями.
Вы смотрите на экран монитора, имеющего два измерения: высоту и ширину. Но когда вы смотрите мультик или играете в современные игры, экран вам кажется трехмерным. И что больше всего зачаровывает, можно наблюдать на экране реальный сегодняшний мир, мир в котором мы будем жить завтра, или мир, существующий только в воображении создателей компьютерной игрушки. И все эти миры появляются на одном и том же экране, который вы, возможно, минуту назад использовали для печати отчета о текущей котировке акций. Как же так получается, что компьютер обманывает ваше зрение, и вы невольно считаете, что за плоским экраном существует трехмерное пространство? Как получается, что программисты игр убеждают нас в том, что мы наблюдаем за реальными персонажами в их реальной среде обитания? В этой статье мы расскажем о хитрых приемах дизайнеров трехмерной графики.
Что делает картинку трехмерной?
Картинка, кажущаяся трехмерной (3D) должна иметь три измерения: высоту, ширину и глубину. Двумерная картинка (2D) имеет два измерения: высоту и ширину. Некоторые картинки изначально двумерны. Многие простые символы должны быть понятны с первого взгляда. Поэтому, чем проще они нарисованы, тем лучше. Вот главное отличие 2D графики от 3D: двумерная графика хороша для выражения чего-либо простого за максимально короткое для понимания время. Трехмерная графика может дать больше информации, но на ее усвоение требуется большее время. Если перевод двумерной картинки в трехмерный вид сводится к добавлению некоторого количества информации, то перевод 3D статичной картинки в движущееся изображение требует намного большего.
Для большинства из нас компьютеры или современные приставки являются наиболее привычным способом знакомства с трехмерной графикой. Компьютерные игры или видеоролики изготавливаются с помощью созданных компьютером картинок. Обычно процесс создания реалистичной трехмерной сцены разбивается на три важных шага:
- создание виртуального 3D мира.
- выбор части мира, которая будет демонстрироваться на экране.
- задание представления для каждого пикселя на экране для максимальной реалистичности изображения.
Виртуальный 3D мир это не просто эскиз такого мира. Чтобы вам лучше в этом разобраться, приведем пример из реального мира. Рассмотрим вашу руку и стол под ней. Ваша рука обладает характеристиками, которые определяют способы движения руки и ее вид. Пальцы примыкают к ладони и послушно сгибаются в суставах. Если шлепнуть рукой по столу, то он не брызнет во все стороны, так как стол всегда твердый и цельный. Ваша рука не может пройти сквозь стол. Всю эту информацию нельзя получить, просто взглянув на рисунок предмета. Но сколько бы фотографий вы ни сделали, на любой из них ваши пальцы будут сгибаться в суставах, и примыкать к ладони, стол будет всегда твердым, а не жидким. Так ведут себя вещи в реальном мире, и они всегда будут себя так вести. Объекты же виртуального трехмерного мира не существуют в природе, в отличие от вашей руки. Все они - искусственные, а все их свойства задаются программой. Разработчики используют специальные инструменты для аккуратного описания 3D мира, чтобы каждый объект вел себя, так как ему положено.
Какую часть виртуального мира показать на экране?
В любой момент экран демонстрирует только крошечную частичку виртуального трехмерного мира компьютерной игры. Показываемая часть определяется способом задания мира, направлением, куда вы пожелаете в нем пойти и точкой, в которую вы будете при этом смотреть. Независимо от того, какой путь вы выберите: вперед или назад, вверх или вниз, вправо или влево, виртуальный 3D мир вокруг вас определит, что вы увидите из вашей позиции по направлению вашего взгляда. Смысл увиденного вами не должен меняться от сцены к сцене. Если вы смотрите на объект с одной и той же дистанции, то он должен сохранять те же размеры независимо от направления взгляда. Способ движения и вид каждого объекта должны убеждать вас в том, что он имеет постоянную массу, что он всегда твердый или мягкий, жесткий или гибкий и т.д. Программисты, создающие компьютерные игры, затрачивают огромные усилия на описание 3D мира, чтобы вы могли восхищаться этим миром и не встречать в нем ничего, что бы разубедило вас в его реальности. Вы же не хотите увидеть, как два твердых объекта проходят друг сквозь друга? Это сразу бы напомнило вам об иллюзорности виртуального мира.
И третий шаг включает в себя, по крайней мере, столько же компьютерных вычислений, как и первые два шага вместе взятые, если не больше. Причем этот шаг должен выполняться в реальном времени в играх и видеороликах
Прежде чем изображение станет реалистичным, объекты проходят несколько стадий обработки. Самые важные стадии это создание формы (shape), обтягивание текстурами, освещение, создание перспективы, глубины резкости (depth of field) и сглаживания (anti-aliasing).
Так как же создается это третье измерение? Есть два основных подхода. Можно сделать псевдотрехмерные сэмплы, а потом обработать их по принципам двухмерной графики, лишь изредка касаясь простейших законов третьего измерения.. А можно создать модель трехмерного мира, а потом спроецировать часть его на плоскость экрана. Так делают все современные трехмерные игры.
Однако трехмерный мир надо как-то смоделировать. Пользоваться при этом наработками из растрового 2D -- неудобно. Графика будет тяжеловесной и тормозной. Нужен другой способ... Постойте, а какая у нас самая прогрессивная технология в 2D? Конечно же, векторная графика. И весит мало, и обсчитывается сравнительно быстро. Есть у нее и свои недостатки, но достоинств больше. Почти полное переложение основ векторной графики в 3D -- это технология NURBS (более подробно она рвссмотрена в разделе ). А самый распространенный способ моделирования 3D -- частичное переложение основ векторной графики. В целом это называется 3D конвейер. Процесс построения 3D-изображения можно разделить на три последовательных этапа. На первом этапе объект преобразуется в мозаичную модель, т.е. происходит его разделение на множество многоугольников (полигонов). Следующий этап включает в себя геометрические преобразования и установки освещения. Наконец, заключительный этап, так называемый "рендеринг" (rendering), который является наиболее важным для качества 3D-изображения, создает двумерное изображение из полученных на предыдущих этапах многоугольников. Любая трехмерная модель (из которых, в конечном счете, и состоит виртуальный мир) представляется в виде некоторого числа пересекающихся плоскостей. Излишки плоскостей обрезаются. В итоге остаются двухмерные многоугольники, помещенные в трехмерную систему координат. Такой многоугольник называется полигоном.
7. Создание виртуальной реальности
7.1. Полигоны и остальное
Вот с полигоном сложилась некая путаница. Классики учат, что полигон -- это любой выпуклый многоугольник, а, программисты, которые пишут игры, считают, что полигон - суть треугольник. И то, и другое верно. Но в практике мы чаще всего считаем не полигоны, а именно треугольники. Почему? Да потому, что перед рендерингом все сложные многоугольники разбиваются на треугольники, и акселератор работает в конечном счете именно с треугольниками.
Как вы думаете, 5000 полигонов на модель -- это много? Ничуть. Скорее мало. Вдумайтесь: ведь это всего лишь плоские треугольники. Не случайно разработчики указывают эту цифру именно в треугольниках -- так больше получается. Сомнительно, чтобы из плоских треугольников можно было слепить что-то красивое. Для создания реалистичного лица понадобится как минимум несколько миллионов треугольников. И сложные алгоритмы для управления ими.
Между тем модели в новых компьютерных играх смотрятся неплохо. Для пущей красоты разработчики применяют разнообразные технологии, например каркасное сглаживание. Простейшие из них реализует сам акселератор в паре с “дровами”. Углы полигонов сглаживаются и немного размываются. В итоге модель смотрится не угловатой, а округлой. Но и такой подход не идеален. В старых играх была проблема, когда модель, скажем, деревянного ящика довольно странно выглядела с закругленными углами. Нельзя же сглаживать все без разбора. Поэтому разработчики “железа” и трехмерных API постановили: углы в 90 градусов оставить в покое. Вот мы и раскрыли первый секрет разработчиков игр: не в количестве дело. Умелый дизайнер из 500 полигонов может создать такую шикарную модель!
Модель может быть окрашена в какой-нибудь цвет. Но цвет -- не единственная визуальная характеристика полигона. Его внешний вид определяет свойство -- материал. Описание материала модели включает в себя цвет модели, свет рассеянный, отраженный, параметр отражения, альфа-канал и еще кучу всевозможных характеристик. Умелый программист или дизайнер только с их помощью наведет красоту неземную.Есть у нас, к примеру, камешек из малахита. А мы мало того, что описываем его текущий вид, так еще и показываем, как будет от него отражаться свет при разных вариантах освещения, какой у него отлив да перелив -- целая физика получается.
А как мы этому малахитовому камешку соответствующий узор присвоим? Для этого существует еще один важный параметр материала -- текстура. О них мы уже пару раз упоминали, но что поделаешь, без них - никуда. это одна из основ трехмерных игр.Это двухмерное изображение, которое как бы оборачивается вокруг трехмерной модели. При этом можно точно указать, как текстура на модели ляжет и к какой точке на модели, например, лицо вашего начальника определится.. Текстуры поддаются сглаживанию, фильтрации, и прочей экзотической обработке. Текстуры на модели натянуты, но их не видно. Вообще ничего не видно. Поэтому громко хлопаем в ладоши и кричим: “Да будет свет!” Трехмерный мир надо освещать источниками света. Они бывают точечные, прожекторообразные, рассеянные и еще много какие. Свет может быть цветным, отраженным, объемно-отраженным. Чтобы свет реалистично ложился на модели, создаются карты освещенности.
Когда вы входите в темную комнату, вы включаете свет. Вы не задумываетесь, как же свет, выходя из лампочки, распределяется по всей комнате. Но при разработке 3D графики необходимо постоянно это учитывать, потому что все поверхности, окружающие каркас, должны быть откуда-нибудь освещены. Один метод, называемый методом бегущего луча (ray-tracing), вычерчивает путь, который воображаемый луч пройдет после выхода из лампы, отражения от зеркальных поверхностей и который, в конце концов, закончится на предмете. Луч осветит его с различной интенсивностью под различными углами. Метод кажется достаточно сложным даже при построении лучей от одной лампы, но в большинстве комнат существует множество источников света: несколько ламп, окон, свечей и т.д.
Освещение играет ключевую роль в двух эффектах, придающих ощущение веса и цельности объектам: затенения (shading) и тени (shadow). Первый эффект затенения заключается в изменении интенсивности освещения объекта от одной его стороны к другой. Благодаря затенению шар выглядит круглым, высокие скулы выпирают на лице, а одеяло кажется объемным и мягким. Эти различия в интенсивности света совместно с формой усиливают иллюзию, что объект кроме высоты и ширины имеет еще и глубину. Иллюзия веса создается вторым эффектом: тенью.
Трехмерный мир готов. Но пока только матерый программист может восторгаться его шестнадцатеричными красотами. А как перевести его из цифровых глубин оперативной памяти на экран? С помощью проецирования. Но оказывается, что все не так просто. Проекции бывают разные: параллельные, ортогональные, косоугольно-лихозакрученные и всякие другие. Для реалистичного трехмерного мира самая подходящая проекция -- перспективная. Именно так мы видим мир -- в перспективе. Закон перспективы прост: чем дальше объект от наблюдателя, тем меньше у него видимые размеры. А перспективы тоже бывают разные. При разном фокусном расстоянии и разном угле обзора мы увидим на экране совершенно разные картинки. И этим можно воспользоваться
Двухмерный слепок мгновения готов, и ему пора на экран. Но еще много надо сделать, прежде чем его увидит игрок. Для этого у современных акселераторов и графических библиотек в распоряжении целые россыпи модных приемов. В большинстве игр движку остается наложить двухмерные элементы пользовательского интерфейса, и видеокарта отправит полученное изображение... нет, не на монитор, если он, конечно, не LCD. Большинство современных мониторов аналоговые, поэтому надо перевести набор пикселов во что-то более понятное, например, в последовательность аналоговых сигналов. Занимается этим важным делом модуль видеокарты под названием RAMDAC.
Как же совместить тонкие программные материи и материальное компьютерное “железо”? Создали мы в оперативной памяти математическую модель красочного мира. Эта модель через миллисекунды оказалась у нас перед глазами -- на поверхности монитора. Интересно, как? С помощью процесса, который называется рендеринг (от английского render).
Слово render (изменять состояние - англ.) - часто используется в играх, особенно в трехмерных в реальном времени, поскольку компьютер и программа формируют изображении в зависимости от того, где находится герой в данный момент. Отсюда следует понятие interactive (взаимодействующий, согласованный - англ.). В кинофильме вы видите каждый кадр таким, каким он был отснят, и его невозможно изменить извне. В трехмерной игре пользователь управляет видом каждого кадра, выбирая направление движения и выполняемые действия. Каждый кадр во время игры формируется "на лету", в зависимости от происходящих событий.
Рендеринг -- это все те экзекуции, которые производят над моделью программные библиотеки и “железо”, начиная с первичной обработки и заканчивая сохранением получившегося кадра во фрейм-буфер. Все операции рендеринга выполняются по многоступенчатому механизму, который назвали конвейером рендеринга. Этот самый конвейер состоит из стадий тесселяции, геометрической обработки и растеризации. Принцип конвейерной обработки 3D является технологическим стандартом, а не прихотью какой-то отдельной конторы. По конвейерному принципу работают все трехмерные программные интерфейсы и все графические акселераторы.
7.2.Тесселяция, или далее о полигоне
Каждый этап конвейера обозначается какой-то буквой. Официально первый этап конвейера называется тесселяция и обозначается буквой “T”. Однако программисты предпочитают называть его триангуляцией. В процессе пыток цельный трехмерный мир разрывается на составляющие, разбирается на мелкие винтики. Говоря сухим и научным языком, в процессе тесселяции поверхности объектов разбиваются на полигоны, а полигоны -- на треугольники (хотя в некоторых случаях эта стадия опускается). Даже в таком относительно простом процессе есть несколько условностей и сложностей. Не все акселераторы одинаково воспринимают результат тесселяции. Некоторым подавай только треугольники с горизонтальной верхней или нижней гранью, а то и с описаниями уравнений ребер. Вопреки всеобщему мнению, что акселератор силен и могуч, тесселяцию он ускорить при всем желании не сможет, операция эта производится программно.
7.3. Геометрическая обработка
Стадия “G” называется геометрической обработкой. Раньше этот этап конвейера выполнялся полностью программно, но с появлением геометрических процессоров (GPU) часть геометрических преобразований сняли с плеч центрального процессора. Геометрическая обработка -- общее название для ряда операций, благодаря которым мы видим на экране проецированное реалистичное изображение. Первая из них -- трансформация (transformation). Во время трансформации преобразуются координаты объектов. По-научному, к ним применяются матрицы преобразований. А если по-русски, каждый объект посылают, куда ему надо, поворачивают как надо и масштабируют. До и после преобразования координат выполняется отсечение (clipping). После отсечения выполняется освещение. В процессе освещения решается уравнение освещенности, результатом которого становится определение цвета каждой вершины полигона с учетом всех источников света и свойств материала. К сожалению, еще далек тот день, когда освещение будет полностью рассчитываться силами акселератора. Современные акселераторы умеют это делать, но очень медленно. Разработчикам проще использовать старые добрые карты освещенности (lightmap). Для всех источников света заранее создаются текстуры освещенности, которые накладываются на основные текстуры. Карты освещенности разработчики либо рендерят на рабочих станциях с помощью технологии трассировки лучей (ray tracing), либо рисуют от руки. При таком подходе нечего и говорить о динамичных источниках света, все статично. После освещения координаты сцены преобразуются в координаты экрана. Для убыстрения рендера координаты вершин переводятся из плавающей точки в фиксированную точку (не создавать же отдельный графический сопроцессор).
7.4. Растеризация
Последний этап конвейера называется растеризацией и обозначается буквой “R”. Это единственный этап конвейера, который даже в старых акселераторах выполнялся на аппаратном уровне. Растеризация включает в себя субпиксельную подготовку и собственно рендер. Наиболее сложный этап растеризации -- удаление скрытых поверхностей (HSR -- Hidden Surface Removal).
Казалось бы, чего проще отправить рендериться всю сцену целиком. В итоге получим громадный кадр, который потом можно обрезать до размера экрана. Вот только играли бы мы с вами сейчас не в UT 2004, а в тетрис, если бы разработчики решали проблему таким путем. Ведь этот громадный кадр способен посадить на мель любую современную видеокарту. Поэтому поступают по-другому. Определяются полигоны, которые гарантированно не попадут в кадр. Эти полигоны отсекаются. И рендерится только та часть сцены, которую в данный момент “видит” виртуальная камера. Такой подход экономит системные ресурсы. Но отсечь невидимые поверхности -- задача непростая. Как учитывать полигоны, у которых “в кадре” оказывается только кусочек? А как учесть полигон, который находится где-то там за стенкой и все равно не виден, а нам придется его зачем-то просчитывать?
В разные времена проблему отсечения невидимых поверхностей решали по-разному. Но начало всегда было одинаковым. Шестью плоскостями по трем координатам ограничивается область сцены, которая гарантированно будет видна на экране. Эти плоскости образуют объем отсечения (clipping volume), который берется с некоторым запасом. Затем в дело вступает backface culling -- отбрасывание задних граней. У каждого полигона помимо координат вершин есть важнейшая характеристика -- нормаль. Это вектор, который лежит на перпендикуляре, восставленном из геометрического центра треугольника. С помощью специальной функции можно по координатам вершин треугольника определить его нормаль.
У каждого полигона есть две стороны -- лицевая и обратная. Нормаль определяет, куда “смотрит” полигон. Представьте себе сферу. Нормали сферы направлены во внешнюю сторону, и ее поверхность образована лицевыми сторонами граней. Примерно половина полигонов сферы “смотрит” от экрана, вторая половина -- на экран. А это значит, что все полигоны, смотрящие от экрана, гарантированно не видны. Их можно отсечь. И рендерить акселератору придется только половину полигонов сферы. Конечно, не все игровые объекты такие симметричные, как сфера, но у большинства примерно половина полигонов не видна. На этом принципе основывается backface culling.
В зоне отсечения все еще много полигонов. И большая их часть не видна. Это -- игровые объекты и персонажи за стенами, под полами, над потолками. Обычными способами отсечь их невозможно. Простой расчет, что находится перед стенкой, а что -- за ней, занял бы массу процессорного времени. А ведь есть еще и окна, а то и полупрозрачные панели. Придумали более рациональный путь решения этой проблемы.
Речь идет о BSP-деревьях. BSP (Binary Space Partitioning) -- это двоичное дерево предварительной сортировки треугольников сцены. С его помощью в процессе рендера можно очень быстро отсортировать треугольники по расстоянию от наблюдателя. Ясно, что в отсортированном BSP-дереве верхние треугольники будут видимыми, а нижние -- нет. Но построить BSP-дерево -- сама по себе ресурсоемкая задача. Этот метод не идеален.
Можно отсечь невидимые треугольники и другим методом -- методом порталов. Все объекты в помещении, где находится игрок, считаются условно видимыми (потом их видимость дополнительно проверяется), а предметы вне комнаты -- невидимыми. Разработчики уровня расставляют логические объекты -- порталы -- в дверях, окнах, полупрозрачных перегородках -- словом, в местах, через которые игрок сможет увидеть другие комнаты. При рендере объекты вне текущего помещения просчитываются только сквозь порталы, что значительно упрощает задачу. К сожалению, это метод почти не подходит для открытых пространств.
Для ускорения процедуры отсечения невидимых граней разработчики применяют и некоторые допущения и упрощения сцены. Всю сцену разбивают на большие кластеры, например на отдельные здания. Каждый кластер разбивают на кластеры поменьше: здания -- на комнаты, и т.д. В каждой комнате выделяют отдельные предметы: столы, стулья, ящики, шкафы. Сложные предметы (людей, например) представляют в виде параллелепипедов. Из всего этого собирается большое иерархическое дерево уровня с кластерами вместо листьев. Теперь, если весь большой кластер игроку не виден, то и все подкластеры внутри кластера тоже не видны, а значит, их не надо обсчитывать. Такой подход экономит мощности акселератора, но вот применяют его нечасто. Никакой даже самый интеллектуальный акселератор на сегодняшний день не может сам разбить уровень на кластеры и подкластеры. Все тяготы по построению иерархии кластеров ложатся на хрупкие плечи программистов.
Различными способами сцена освобождается от лишних полигонов. С невидимыми полигонами мы разобрались, но остались еще перекрывающиеся полигоны. Представьте себе модель стола. Мысленно разбейте ее на полигоны. Какие-то полигоны будут перекрывать другие. Но это в нашей реальности. В виртуальной реальности не все так однозначно. Если полигоны отрендерятся в произвольном порядке, вполне может получиться такая картина: одна из задних ножек стола перекрывает стол спереди, торец где-то на заднем фоне, а передняя ножка вообще вывернута наизнанку. А все потому, что полигоны нельзя рендерить абы как. Их надо рендерить в строгом порядке. Те, что дальше -- рендерятся раньше. Те, что ближе -- позже.
Это еще не все. Бывает, что два полигона пересекаются в некоторой точке. Кого из них рендерить первым? Нам понятно, что надо отрендерить часть первого и часть второго. Но вот процессору это совсем не понятно. Есть два общепринятых метода. Первый -- это знакомый многим Z-буфер. А второй -- так называемая Z-сортировка. Z-сортировке - это довольно грубый и малоэффективный метод. А вот о Z-буфере поговорим, так как почти в каждой игре есть настройки, связанные с ним.
На большинстве сцен одни объекты находятся впереди и частично блокируют вид на другие объекты. Для таких сцен программное обеспечение должно не только просчитать относительный размер объектов, но и учитывать информацию, какие объекты закрывают другие и насколько сильно. Наиболее часто для этого используется Z-буфер (Z-Buffer). Свое имя этот буфер получил от названия оси Z, или воображаемой линии, идущей за экран через сцену к горизонту. (Две другие оси - это ось X, измеряющая ширину сцены, и ось Y, измеряющая высоту сцены).
Z-буфер присваивает каждому полигону номер в зависимости от того, насколько близко к переднему краю сцены располагается объект, содержащий этот полигон. Обычно меньшие номера присваиваются ближайшим к экрану полигонам, а большие номера - полигонам, примыкающим к горизонту. В настоящем мире, наши глаза не могут видеть объекты закрытые другими, поэтому у нас нет проблем в определении видимых объектов. Но эти проблемы постоянно возникают перед компьютером, и он вынужден непосредственно их решать. При создании каждого объекта, его Z-значение сравнивается со значением других объектов, занимающих те же области по координатам X и Y. Объект с самым маленьким Z-значением будет полностью прорисовываться, другие же объекты с большими значениями будут прорисованы лишь частично. Таким образом, мы не видим фоновых объектов, выступающих через персонажей. Так как Z-буфер задействуется перед полной прорисовкой объектов, скрытые за персонажа части сцены не будут прорисовываться вообще. Это ускоряет графическую производительность.
Z-буфер -- это специальная область видеопамяти. Чаще всего Z-буфер располагается во фрейм-буфере. В Z-буфере хранится значение глубины для каждого пиксела. Когда рендерится новый пиксел треугольника, его глубина сравнивается со значением, которое уже хранится в Z-буфере для точки на экране с такими же координатами X и Y, то есть с соответствующей точкой предыдущего треугольника. Когда новый пиксел “глубже”, чем значение в Z-буфере, пиксел не виден. Если значение его глубины меньше значения в Z-буфере, пиксел виден, и значение его глубины записывается в Z-буфер. В современных акселераторах часто используется W-буфер, в котором хранятся значения, обратные Z-глубине. W-координаты тем удобны, что без лишних расчетов корректно соотносятся с перспективой, тогда как для Z-координат приходится корректировать результат интерполяции координат вершин треугольников. Во многих случаях Z-буфер можно отключить. Это не значит, что изображение превратится в беспорядочную мешанину перекрывающих друг друга полигонов. Просто вместо Z-буферизации в дело вступят упрощенные алгоритмы. С одной стороны, освободится значительный кусок фрейм-буфера, и вы сможете играть в более высоких разрешениях. Но за это придется расплачиваться появлением очень неприятного артефакта -- Z-алиасинга (он же Z-алайзинг). Часто вы будете видеть, как полигоны “проваливаются” друг сквозь друга.!
Некоторые игры позволяют задать глубину или разрядность Z-буфера. Чем выше разрешающая способность, тем точнее рендерятся полигоны. Вас могут попросить выбрать между 16-, 24- и 32-разрядным Z-буфером. Если выбрать буфер с малой разрядностью, может появиться Z-алиасинг, потому что порой пикселам двух треугольников будет соответствовать одна и та же Z-координата, а значит -- и глубина.
После того как определено, какие пикселы полигонов входят в конечный кадр, акселератор рендерит сцену. Но тут есть проблема -- мерцанием изображения. Мерцание появляется из-за того, что экран обновляется не мгновенно. Вся графика прорисовывается в реальном времени. Решена она просто и изящно. Каждый новый кадр сначала рендерится не на экран, а в специальный буфер в видеопамяти, который называется фрейм-буфером. У фрейм-буфера два слоя. В заднем -- новый кадр, а в переднем -- кадр текущий. Когда приходит время очередного рендера, содержимое этих слоев меняется местами (swap). В итоге на экране мы видим новый кадр, а старый кадр пересылается в задний буфер, где немедленно затирается очередным свежеотрендеренным. Этот метод получил название двойной буферизации. Уже известный вам Z-буфер часто делит жизненное видеопространство с двойным кадром во фрейм-буфере. Отсюда и некоторые сложности в их совместной работе.
7.5. Текстура как она есть
При описании процесса рендеринга не был затронут один важный этап -- текстурирование. Не будь текстур, играли бы мы сейчас с вами в экшены с квадратными комнатами, где среди однородных стен сражаются серые чертики, которые могут разве что присниться в страшном сне... Итак, что же такое текстура и зачем она нужна? Выгляньте в окно. Если там не глубокая ночь и не пепелище после атомной бомбардировки, вы увидите много интересного и красивого. Вот, например, простые стволы деревьев. Они испещрены бороздками, их цвет меняется от светло-коричневого до черного, и так далее. У противоположного дома кирпичная кладка тоже не так проста, как кажется на первый взгляд. Каждый кирпич выдается вперед, он не однороден, его украшают щербинки и тени от листьев соседнего тополя. Между кирпичами цемент принимает самые причудливые формы, особенно если дом строили не в совсем трезвом виде (для России привычная картина). И как все это чудо смоделировать? Сколько миллионов полигонов уйдет на реалистичное отображение всех этих красот? На акселераторе какого поколения все это сможет отобразиться с приличными FPS? Представьте, что мы каждый кирпич сделали красным параллелепипедом, а между ними проложили серые плоскости, призванные изобразить цемент. Смотреться все это будет ужасно. И даже такая простая “стена” отъест несколько тысяч полигонов. Так что же делать? Ответ прост -- накладывать текстуры!
Текстура -- это двумерная битовая карта (или попросту картинка), которая накладывается на полигон и изображает фактуру его поверхности. То, что нельзя смоделировать полигонами, можно просто нарисовать. Причем если на поверхности, которую мы моделируем текстурой, нет сильно выдающихся или неоднородных деталей, она будет смотреться реалистично. Текстуры накладывают на стены домов, траву, листья, машины, одежду, лица персонажей и многое-многое другое.
По аналогии с обычной картинкой, которая состоит из пикселей, текстура состоит из текселей. Есть две основные модели представления цвета и света в трехмерной графике. Первая -- знакомая многим RGB или RGBA. Здесь: R -- красная составляющая, G -- зеленая, B -- синяя, и A -- коэффициент прозрачности. Составляющая A стала поддерживаться на уровне операционной системы только в WinXP. А в графических библиотеках (Glide, DirectX и OpenGL) она поддерживалась с самого начала. Другая распространенная модель -- HSB. Ее составляющие: Hue (H) -- длина волны отраженного от объекта или поглощенного света (это также угол между вектором чистого красного и текущего цвета, символизирует цвет объекта), Saturation (S) -- насыщенность цвета, количество серого по отношению к цвету, и Brightness (B) -- яркость. На практике RGB выражается целым числом. В играх очень часто можно выбрать разрядность цвета между 16 и 32 битами. Сегодня уровне операционной системы только в WinXP. А в графических библиотеках (Glide, DirectX и OpenGL) она поддерживалась с самого начала. Другая распространенная модель -- HSB. Ее составляющие: Hue (H) -- длина волны отраженного от объекта или поглощенного света (это также угол между вектором чистого красного и текущего цвета, символизирует цвет объекта), Saturation (S) -- насыщенность цвета, количество серого по отношению к цвету, и Brightness (B) -- яркость. На практике RGB выражается целым числом. В играх очень часто можно выбрать разрядность цвета между 16 и 32 битами. Сегодня шестнадцатибитный цвет -- анахронизм. Если позволяет ваша видеокарта, всегда выбирайте 32 бита.
Текстура накладывается строго по координатам. Координаты разработчики обычно включают в сопроводительную информацию о полигонах. Очень важно грамотно “растянуть” текстуру по поверхности объекта и присвоить ей нужные координаты.
7.6. Фильтрация и MIP Mapping
При работе с текстурами существует немало проблем. У экрана есть свое разрешение и определенное количество пикселей, которые на нем можно отобразить в данной области экрана. Но в соответствующей области виртуального мира количество текселов (текстурных пикселов) может быть и больше, и меньше, чем на экране. Если текстура двумерная и параллельна поверхности экрана, то мудрить ни к чему: каждый тексел перенесется на экран “как есть”. Но что делать, если на какую-то область экрана приходится текселов больше, чем возможных пикселов? Какой цвет назначить пикселу, на который в сцене приходится несколько разноцветных текселов? Еще хуже, если луч от пиксела на экране попадает между текселами на сцене, то есть текселов меньше, чем пикселов. Что тогда делать?
Задача формулируется так: как определить цвет конкретного пиксела на экране, если в сцене на него приходится меньше или больше текселов. На заре трехмерной графики эту задачу решали методом, который называется Point Sampling. От каждого пиксела на экране опускается луч вглубь сцены. Тексел, который ближе всех оказывается к этому лучу, и накладывается на экран. При этом неизбежно возникают ошибки. Если текселов на каждый пиксел слишком много, часть информации просто теряется. Если же на пиксел приходится меньше одного тексела (когда объект расположен близко к камере), пробелы восполняются несуществующими пикселами. На практике это выглядит так: когда игрок приближается к объекту, то с удивлением замечает, что виртуальные пикселы его текстуры становятся просто гигантских размеров. Да и само изображение распадается на пикселы, как будто на большом экране поставили маленькое разрешение.
Такой низкокачественный метод современного игрока не устраивает, поэтому существуют методы так называемой билинейной фильтрации (Bi-Linear Filtering). Билинейная фильтрация это техника устранения искажений изображения (фильтрация), таких, как "блочности" текстур при их увеличении. При медленном вращении или движении объекта (приближение/удаление) могут быть заметны "перескакивания" пикселов с одного места на другое, т.е. появляется блочность. Во избежании этого эффекта применяют билинейную фильтрацию, при использовании которой для определения цвета каждого пикселя берется взвешенное среднее значение цвета четырех смежных текселей и в результате определяется цвет накладываемой текстуры. Результирующий цвет пикселя определяется после осуществления трех операций смешивания: сначала смешиваются цвета двух пар текселей, а потом смешиваются два полученных цвета.
Поэтому вместо того чтобы определять цвет пиксела по одному текселу, его цвет получается в результате интерполяции (усреднения) цветов четырех соседних текселов. Если объект расположен далеко от камеры, его текстура почти не искажается. А когда объект недалеко от камеры, и текселов не хватает, интерполяция создает расплывчатое изображение этой области. Билинейная фильтрация хорошо работает только для полигонов, которые параллельны или почти параллельны экрану. Дело в том, что четыре соседних тексела, которые берутся для интерполяции, -- это почти круг. Если плоскость наклоняется, круг медленно, но неумолимо превращается в эллипс. Но интерполируются текселы по-прежнему по кругу. От этого постоянно накапливаются небольшие ошибки. После определенного угла наклона ошибки становятся уже заметными, текстура фильтруется геометрически неправильно, наблюдаются сильные искажения., называемых артефактами. Впрочем, существует целый класс артефактов визуализации, появляющихся в результате наложения текстур и известный под названием "depth aliasing" (депт-алиасинг, ошибки определения глубины сцены, другое название Z-aliasing), от которых билинейная фильтрация не избавляет и не может избавить. Ошибки "depth aliasing" возникают в результате того факта, что объекты более отдаленные от точки наблюдения, выглядят более маленькими на экране. Если объект двигается и удаляется от точки наблюдения, текстурное изображение, наложенное на уменьшившийся в размерах объект становится все более и более сжатым. В конечном счете, текстурное изображение, наложенное на объект, становится настолько сжатым, что появляются ошибки визуализации. Эти ошибки визуализации особенно нежелательны в анимации, где такие артефакты во время движения становятся причиной мерцания и эффекта медленного движения в той части изображения, которая должна быть неподвижной и стабильной.
Подобные документы
Представление графических данных. Растровая, векторная и фрактальная виды компьютерной графики. Цвет и цветовые модели: метод кодирования цветовой информации для ее воспроизведения на экране монитора. Основные программы для обработки растровой графики.
реферат [429,7 K], добавлен 01.08.2010Компьютерная графика как область информатики, занимающаяся проблемами получения различных изображений на компьютере. Области применения компьютерной графики. Двумерная графика: фрактальная, растровая и векторная. Особенности трёхмерной графики.
реферат [756,4 K], добавлен 05.12.2010Компьютерная графика - область информатики, занимающаяся проблемами получения различных изображений. Виды компьютерной графики: растровая, векторная, фрактальная. Программы для создания компьютерной анимации, область применения, форматы хранения.
реферат [29,1 K], добавлен 16.03.2010Механизм графического представления данных. Виды компьютерной графики: фрактальная, трехмерная, растровая, векторная. Разрешение экранного изображения, понятие линиатуры. Связь между параметрами изображения и размером файла. Динамический диапазон.
реферат [38,6 K], добавлен 27.12.2012Компьютерная графика как раздел информационных технологий, в котором изучают вопросы получения графических изображений с помощью компьютера. Ее классификация и типы, сравнительная характеристика, признаки: растровая, векторная, фрактальная и трехмерная.
презентация [2,0 M], добавлен 04.04.2016Виды компьютерной графики: растровая, векторная, фрактальная и трёхмерная. Основные понятия компьютерной графики. Кодирование аудиоинформации, основные аудио форматы. Смешение сигналов и видео форматы. Разработка программы построения фракталов.
дипломная работа [1,2 M], добавлен 14.01.2015Виды и способы представления компьютерной информации в графическом виде. Отличительные особенности растровой и векторной графики. Масштабирование и сжатие изображений. Форматы графических файлов. Основные понятия трехмерной графики. Цветовые модели.
контрольная работа [343,5 K], добавлен 11.11.2010Суть принципа точечной графики. Изображения в растровой графике, ее достоинства. Обзор наиболее известных редакторов векторной графики. Средства для работы с текстом. Программы фрактальной графики. Форматы графических файлов. Трехмерная графика (3D).
дипломная работа [764,7 K], добавлен 16.07.2011Средства и способы создания и обработки графических изображений при помощи компьютерной техники. Растровая, векторная, трёхмерная и фрактальная графика, отличия принципов формирования изображения при отображении на экране монитора. Програмные средства.
реферат [436,4 K], добавлен 26.03.2010Основные виды компьютерной графики. Достоинства и недостатки векторной графики. Сущность понятия "коэффициент прямоугольности пикселей". Математическая основа фрактальной графики. Сущность понятий "фрактал", "фрактальная геометрия", "фрактальная графика".
контрольная работа [20,6 K], добавлен 13.07.2010