русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

D-конвейер


Дата добавления: 2014-12-01; просмотров: 784; Нарушение авторских прав


Видеосистема ПК

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

В профессиональных ЗD-ускорителях иногда используется другой способ построения трехмерных сцен — методом обратной трассировки лучей (Ray Tracing), который требует гораздо больших вычислительных ресурсов.
Для отображения треугольников на плоскости используется метод так называемых однородных координат, опирающийся на матрицы преобразования и проектирования. Расчет положения любой точки трехмерной сцены на плоскости сводится к умножению вектора исходных координат на эти матрицы. Современный центральный процессор затрачивает на обработку одной точки около 10 тактов и за секунду просчитывает координаты десятка миллионов вершин. Таким образом, расчет геометрии сцены не составляет для современного центрального процессора особого труда.Проблемы начинаются при закраске полигонов и определении видимых поверхностей, то есть при сопоставлении глубины расположения полигонов относительно наблюдателя.
Реалистичность изображения в трехмерной сцене во многом определяется качеством текстур — заранее нарисованных картинок, наложенных на полигоны. Для каждой вершины указываются ее координаты в плоскости изображения-текстуры. При расчете цвета конкретной точки полигона учитывается ее расположение относительно вершин треугольника и точке присваивается цвет, аналогичный цвету соответствующей точки текстуры. Для этого каждой точке экрана, попавшей в треугольник, нужно найти соответствие в текстурных координатах (это сравнительно затратный процесс) и провести так называемую выборку из текстуры —вычислить цвет текстуры в полученной точке. Последняя задача не слишком проста, поскольку часто расчетная точка попадает между пикселями изображения-текстуры. Поэтому расчеты получаются очень трудоемкими, особенно с учетом наложения нескольких текстур. Вдобавок текстуры в современных играх часто представлены изображениями высокого разрешения. В итоге сверхмощный центральный процессор даже при низком экранном разрешении способен обработать не более десятка кадров в секунду. Поэтому ускорители трехмерной графики в первую очередь были созданы для аппаратного ускорения закраски.
Объекты в сцене, даже с наложенными текстурами, выглядят весьма уныло, если не учитывается их освещенность. Первые ускорители работать с источниками освещения не умели. Игровой движок заблаговременно рассчитывал освещенность элементов сцены и создавал соответствующие текстуры освещения (light maps). Уже просчитанные блики света отрисовывались как текстуры. В статических сценах такой «свет» выглядел неплохо, но в динамических сценах подвижный объект смотрелся одинаково на свету и в тени, что снижало реалистичность. Для улучшения реалистичности стали рассчитывать освещенность объекта методом Гуро: определив освещенность вершин полигонов, ее интерполировали на внутренние точки граней. Такой подход лег в основу графических процессоров с фиксированным конвейером (поколение DirectX 7), получивших аппаратный блок геометрических вычислений — Hardware Transform & Lightning (T&L). Однако требования к реалистичности сцены непрерывно росли, а метод интерполяции по всему полигону был не в состоянии правдоподобно передать фактуру поверхности. Кроме того, большинство трехмерных объектов строились из малого числа полигонов с целью экономии вычислительных ресурсов и потому страдали «кубизмом» в силу прямолинейности образующих полигоны линий и плоских граней.
Эту проблему решили, применив метод расчета освещенности с учетом вектора нормали к поверхности, то есть вектора, перпендикулярного к поверхности в данной точке. Задав еще одну текстуру специального вида (определяющую нормали) и модифицировав алгоритм расчета цвета точки, сумели радикально улучшить внешний вид моделей. Подобный метод называют Bump Mapping. Для полноценной реализации он требует программирования пиксельных конвейеров — перехода от интерполяции и выборки из текстур к обработке формул расчета цвета каждого пикселя объекта (а не только вершин). Так впервые появились пиксельные шейдеры — комплекты команд, позволяющие программировать пиксельные конвейеры графического процессора.
Видеоадаптеры, поддерживающие обработку шейдеров, появились в поколении DirectX 8. Как правило, программы -шейдеры пишут на специальной разновидности ассемблера, привязанного к конкретному графическому процессору. В последнее время появились языки программирования высокого уровня для создания шейдеров, например Microsoft High-Level Shader Language (HLSL)





<== предыдущая лекция | следующая лекция ==>
DirectX | Вершинные шейдеры


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.