Ускорители трехмерной графики
Двумерные акселераторы оптимизированы для работы с приложениями Windows и дают ощутимый выигрыш в производительности компьютерной системы, но это совсем не означает, что они могут ускорять воспроизведение произвольной графики, например такой, которая встречается в мультимедийных изданиях и в компьютерных играх. Для всякой конкретной видеокарты, обладающей свойствами ускорения, есть своя область применения, на которой она показывает наилучшие результаты. Вопрос обработки произвольных изображений аппаратными средствами видеоадаптера решается сложнее, чем вопрос обработки стандартных объектов Windows. Тем не менее, и в данном случае можно выделить ряд достаточно стереотипных операций, выполняемых наиболее часто. Прежде всего, эти операции относятся к обработке трехмерной графики (ЗD-графики). Соответственно, видеоадаптеры, оптимизированные для таких операций, получили название ЗD-акселераторов или ускорителей 3D. Выигрыш при обработке изображений данного класса достигается за счет аппаратной реализации таких операций, как рендирование (визуализация) трехмерных объектов, заливка объектов готовыми текстурами, управление прокруткой фоновой части изображения и т. п. Акселераторы трехмерной гaрафики требуют увеличенного объема видеопамяти, чтобы вычислительные операции с изображением выполнялись внутри видеокарты и не затрагивали основную память компьютера. Часть видеопамяти может также выделяться для хранения заготовленных текстур изображения. 2D-акселерация. Рассмотрим аппаратные методы увеличения скорости вывода графических карт SVGA. Архитектура стандартной карты SVGA оказалась не в состоянии обеспечить необходи-мую для мультимедиа систем производительность графической подсистемы. Для решения этой проблемы рядом фирм были разработаны различные дополнительные аппаратные средства акселерации карт SVGA, по-зволившие разгрузить центральный процессор и увеличить скорость передачи данных:
GUI Accelerator (Graphics User Interface Accelerator) - ускоритель графического интерфейса пользователя. Это устройство представляет собой совокупность блоков, рассредоточенных по всей графической карте, служащих одной цели - перераспределить операции доступа к видеопамяти между всеми блоками графической карты и центральным процессором таким образом, чтобы минимизировать число конфликтов. CPU Write Buffer - буфер записи центрального про-цессора. Это блок, буферизующий операции записи данных центральным процессором в видеопамять графической карты. Если в момент доступа центрального процессора видеопамять занята каким-либо другим блоком карты, этот запрос помещается в буфер и выпол-няется позже. Таким образом минимизируется время ожидания ресурсов центральным процессором. Этот блок осуществляет кэширование видеопамяти подобно тому, как это делает кэш центрального процессора по отношению к основной оперативной памяти компьютера. Оттого, насколько удачно выбрана схема кэширова-ния, в большой степени зависит эффективность работы этого блока. При наиболее удачных стечениях обстоя-тельств выигрыш по скорости записи в видеопамять (по экспериментальным данным) может составлять 2-3 раза. FIFO (First Input First Output) - буфер "первым-вошел-первым-вышел". Этот буфер подобен CPU Write Buffer. Он занимается буферизацией операций передачи данных между блоками Sequencer и Attribute Controller, что позволяет последнему считывать с помощью Se-quencer из видеопамяти не байт, а строку или часть стро-ки пикселей за один цикл обращения, используя режим быстрой страничной пересылки данных (Fast Page Mo-de). Это значительно снижает количество обращений к видеопамяти, которые в обычном случае определяются частотой циклов обновления экрана.
Cursor — графический курсор. Отвечает за аппаратную функцию графического курсора. Эта функция — неотъемлемая часть любого графического интерфейса, в котором применяется курсор, управляемыми такими манипуляторами как "мышь", "Track Ball", "Joystick" и т.п. Будучи реализована программно, она всегда была сопряжена с большим объемом вычислений и пересылок данных при обработке прерываний, приходящих от управляющего курсором манипулятора. Аппаратная же реализация во много раз сократила объемы пересылок и время обработки этих прерываний. Bit BLT (Bit Block Transfer) — копирование битовых блоков. Данный блок аппаратно реализует функцию копирования участков изображения прямоугольной формы. Как правило, поддерживаются расширенные варианты данной функции, способные совершать логические функции над содержимым копируемой области. Это одна из самых распространенных и самых емких по времени экранных функций в системах с графическим интерфейсом пользователя. Таким образом, был сделан серьезный шаг по разгрузке центрального процессора oi большой части взаимодействий с видеопамятью. В сочетании с остальными блоками "GUI Accelerator" этот блок позволяет осуществлять операции копирования типа видеопамять-видеопамять приблизительно в 20 раз быстрее, чем программно, а память-видеопамять - приблизительно в 10 раз. Line Draw — рисование линий. В блоке аппаратно реализуется функция рисования прямых линий. Он достаточно редко встречается в графических картах, обладающих только функциями "GUI Accelerator", а чаще реализуется как одна из функций "Graphics Co-Processor", о котором пойдет речь ниже. Graphics Co-Processor - графический сопроцессор. Исполняющее устройство выступает в качестве специализированного сопроцессора, с которым можно общаться через особые порты ввода/вывода, принадле-жащие регистрам блока регистров. Этот сопроцессор является вторым устройством после Graphics Controller, с помощью которого можно записывать информацию в видеопамять, но он обеспечивает более высокоуровневый интерфейс. Если с по-мощью блока Graphics Controller операциями записи центрального процессора можно было записывать в видеопамять байты, предварительно установив в соот-ветствующих регистрах специальных портов ввода/вывода режим записи, логическую функцию, битовую маску и т.п.,то с помощью Graphics Co-Processor можно сразу "рисовать" в видеопамяти простейшие графичес-кие примитивы: линии, дуги, закрашенные прямоуголь-ники и т.п. Таким образом, практически все векторные примитивы, являющиеся обычно основой любой графической библиотеки, не только исполняются отдельным процессором, освобождая центральный процессор компьютера, но и содержатся не в главной оперативной памяти, а в микрокоде Graphics Co-Processor, освобож-дая пространство оперативной памяти. 3D-акселерация.
Когда в роли двигателя прогресса выступили компьютерные игры, 2D-ускорители почти исчерпали свои возможности, и эволюция видеокарт пошла по пути наделения их все более мощными средствами ускорения трехмерной машинной графики. Видеоадаптеры, способные ускорять операции трехмерной графики, получили название 3D-ускорителей (синонимом является 3D-акселератор, а также часто встречаемое жаргонное "3Dfx" для обозначения всех 3D-ускорителей, а не только произведенных компанией 3Dfx Interactive). Какие же действия ускоряет 3D-акселератор? В компьютере трехмерные объекты представляются с помощью геометрических моделей, состоящих из сотен и тысяч элементарных геометрических фигур, обычно треугольников. Задаются также пространственное положение источников света, отражательные свойства материала поверхности объекта, степень его прозрачности и т. п. При этом некоторые объекты могут частично загораживать друг друга, между ними может переотражаться свет; пространство может быть не абсолютно прозрачным, а затянутым туманом или дымкой. Для большего реализма необходимо учесть и эффект перспективы. Чтобы поверхность смоделированного объекта не выглядела искусственной, на нее наносится текстура - двухмерная картинка небольшого размера, передающая цвет и фактуру поверхности. Все перечисленные трехмерные объекты с учетом примененных к ним эффектов должны в конечном итоге быть преобразованы в плоское изображение. Эту операцию, называемую рендерингом, и выполняет 3D-ускоритель.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|