Архитектура ЭВМ. Лекция 4

Вид материалаЛекция

Содержание


Imagination tech
T&L, Transforming & Lighting
Crossbar Memory Controller
DVI (Digital Visual Interface
Procedural Textures
Bump Mapping/Specular Bump Mapping
Displacement Mapping
Normal Mapping
Parallax Mapping/Offset Mapping(Virtual Displacement Mapping, Per-Pixel Displacement Mapping)
Postprocessing (Постобработка)
High Dynamic Range (HDR)
Tone Mapping
Depth of field (глубина резкости)
Global Illumination
В глобальной модели освещения, global illumination
Программный 3D интерфейс – OpenGL, Direct3D.
Подобный материал:
Архитектура ЭВМ. Лекция 4.

Содержание:

CD и DVD диски. Устройство, принципы работы с ними.

Внешние носители информации. Iomega, ZIP, JAZZ, LS-120, MO-Drive. Flash. Технология ETOX.


Краткие итоги прошлой лекции.

Архитектура контроллера IDE. Основные характеристики. Устройство жесткого диска. Логическая и физическая адресация данных.

Интерфейс Serial ATA.

Технология SMART. Контроллеры SCSI и FibreChannel.

Подходы к улучшению производительности дисковой подсистемы. Уровни RAID 0-3.

Уровни RAID 4-7, 10, 30, 50.


Часть 1. Видеосистема и ускорители.


Видеокарта – компьютер в миниатюре, копирует мат. Плату:
  • GPU (VPU)
  • Разъемы (PCI, AGP, VideoOut)
  • Память (своя конструкция)
  • BIOS, тактовый генератор


Д/з – узнать наименование, набор разъемов своей видеокарты. Тип памяти.

2D Graphics - Графика, *действие* в которой происходит в одной плоскости. Например, пользовательский интерфейс.

3D Graphics - Визуальное отображение трехмерной сцены или объекта. Для представления трехмерной графики на двумерном устройстве (дисплей) применяют рендеринг.

Pixel - Комбинированный термин, обозначающий элемент изображения, который является наименьшим элементом экрана монитора. Другое название - pel.
Изображение на экране состоит из сотен тысяч пикселей, объединенных для формирования изображения. Пиксель является минимальным сегментом растровой строки, которая дискретно управляется системой, образующей изображение. С другой стороны, это координата, используемая для определения горизонтальной пространственной позиции пикселя в пределах изображения. Пиксели на мониторе - это светящиеся точки яркого фосфора, являющиеся минимальным элементом цифрового изображения. Размер пикселя не может быть меньше точки, которую монитор может образовать. На цветном мониторе точки состоят из групп триад. Триады формируются тремя различными фосфорами: красным, зеленым и синим. Фосфоры располагаются вдоль сторон друг друга. Пиксели могут отличаться размерами и формой, в зависимости от монитора и графического режима. Количество точек на экране определяются физическим соотношением ширины к высоте трубки.



Texel – элемент текстуры – определенный пиксель в текстуре.




RGB - Система цветообразования, в которой конечный цвет получается за счет смешения, с различной интенсивностью, трех основных цветов: красного (Red), зеленого (Green) и синего (Blue). Самое известное устройство, которое использует систему RGB, это цветной монитор.



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



Alpha - Коэффициент прозрачности. В описание цвета (RGB) может входить специальный канал, называемый альфа-каналом, который отвечает за прозрачность данного цвета. Т.о., цвет описывается как ARGB.

Back buffer ( & Front buffer) - Область памяти, в которой рассчитываются объекты трехмерной сцены. Вывод изображения на экран осуществляется через Front Buffer (первичный буфер). Обычно процесс копирования содержимого вторичного буфера синхронизируется с обратным ходом луча ЭЛТ монитора. Таким образом достигается плавная смена кадров

FPS - Частота смены кадров. Чтобы оценить быстродействие системы трехмерной визуализации, достаточно запустить приложение, динамически создающее трехмерные сцены, и подсчитать число кадров в секунду, которое система способна отобразить. Однако, единого, достаточно авторитетного теста такого рода еще не создано. Большинство имеющихся тестов, основаны на фрагментах трехмерных игр и проверяют поведение графической карты на весьма ограниченном наборе функций.
Например, известная фирма Ziff Davis, выпустила тестовый пакет 3D Winbench'98.



Z-buffer -часть графической памяти, в которой хранятся расстояния от точки наблюдения до каждого пиксела (значения Z). Z-buffer определяет, какая из многих перекрывающихся точек наиболее близка к плоскости наблюдения.
Также, как большее число битов на пиксель для цвета в буфере кадра соответствует большему количеству цветов, доступных в системе изображения, так и количество бит на пиксель в z-буфере соответствует большему числу элементов. Обычно, z-буфер имеет не менее 16 бит на пиксел для представления глубины цвета. Аппаратные акселераторы 3D графики могут иметь собственный z-буфер на графической карте, чтобы избежать удвоенной нагрузки на системную шину при передаче данных. Некоторые реализации Z-buffer используют для хранения не целочисленное значение глубины а значение с плавающей запятой от 0 до 1.



RAMDAC - Random Access Memory Digital Analog Converter - оперативная память и преобразование цифрового кода в аналоговый сигнал. Этим термином обозначают устройство вывода информации от видеопамяти на монитор компьютера. RAMDAC может быть как встроенным в видеопроцессор, так и выполнен в виде отдельной микросхемы. Чем выше тактовая частота RAMDAC, тем более высокое разрешение и частоту кадров может поддержать видеокарта. Лучшие видеокарты имеют RAMDAC до 350 MHz. Частота в 230 MHz уже стала обычной даже в сегменте недорогих (до $100) видеокарт.


Shader (Шейдер) - программа, задающая акселератору последовательность операций, гибко конфигурируя его. С помощью шейдеров можно создавать самые сложные эффекты. Бывают вершинные и фрагментные (пиксельные), работающие с соответствующим «материалом». Шейдером в широком смысле называется программа для визуального определения поверхности объекта. Это может быть описание освещения, текстурирования, постобработки и т.п. Шейдеры выросли из работ Кука (Cook's shade trees) и Перлина (Perlin’s pixel stream language). Сейчас наиболее известны шейдеры RenderMan Shading Language. Программируемые шейдеры были впервые представлены в RenderMan компании Pixar, там определены несколько типов шейдеров: light source shaders, surface shaders, displacement shaders, volume shaders, imager shaders. Эти шейдеры чаще всего программно выполняются универсальными процессорами и не имеют полной аппаратной реализации.


Производители видеокарт

NVIDIA. занимает значительный сегмент рынка как сверхмощных, так и бюджетных решений. Основа удач этой фирмы на рынке – в крайне сильной маркетинговой политике и очень высокой скорости разработки видеокарт. Фирма представлена во всех сегментах рынка и продаёт карты огромными тиражами. Деталь – фирма не собирает карты сама, а предпочитает отдавать чипы сторонним сборщикам, которые и лепят из них готовые карты. Это позволяет фирме целиком сконцентрироваться на производстве могучих чипов под общим именем GeForce (в недалеком прошлом у этой фирмы были также чипы под именами Riva128, TNT и TNT2).


ATi. вторая фирма, которая занимает оставшуюся долю на рынке. В отличие от NVIDIA, ATi имеет значительные договоры с поставщиками (сборщиками) компьютеров, и поэтому может не торопиться с выходом новых карт, выводя свои решения, когда рынок уже «созрел». Первоначально ATi собирала карты самостоятельно и отвечала за качество перед OEM-партнёрами. Однако, в последнее время, оставшись один на один с NVIDIA, начала исповедывать ту же маркетинговую модель – также выпускает только чипы. Текущий модельный ряд состоит из карт семейства Radeon.


Intel Со времен 98-го года прошлого века, когда фирма пыталась выйти на рынок видеокарт, она туда не суётся. Зато встраивает видеокарты в чипсеты для своих процессоров, и, поскольку процессоров она выпускает немало, то и доля встроенных решений достаточно велика, особенно в офисных машинах.

Matrox Основной рынок для фирмы – рынок профессиональной графики и видеомонтажа. Единственная фирма, способная два года не производить ничего, а потом выдать продукт, сопоставимый с самыми современными решениями конкурентов. Всегда славилась качественным видеовыходом. Крайняя бытовая (бытовая ли?) модель – Matrox Parhelia.

SiS. Это короткое название расшифровывается не иначе как Silicon Integrated Systems, и когда-то это имя наводило благоговение на компьютерщиков. Однако это было очень давно и относилось к чипсетам – не к видеокартам. Сегодня же фирма пытается вернуть себе былую славу. Последняя модель – SiS Xabre.

VIA изначально не занималась видеокартами, предпочитая строить чипсеты, однако, когда дела на фронте чипсетостроения шли хорошо, и у фирмы появились некоторые свободные деньги, она скупила несколько других фирм. Оптом. В их числе, кроме Cyrix и Centaur tech., занимающихся процессорами, оказалась фирма S3, уже известная своими разработками в области 3D-графики, правда, не очень удачными – 2D-графика получалась у неё гораздо лучше. Выпускается семейство под названием Savage.

Приветствуем, Imagination tech. Это имя, мягко говоря, не известно широкой публике. Фирма вообще не выпускает ничего! Она лишь разрабатывает чипы, которые за неё изготавливает фирма STMicroelectronics, а собирает из них карты под гордым именем Kyro в основном фирма Hercules.


GPU.

GPU состоит из двух частей – одна занимается непосредственно построением картинки (конвейер растеризации), вторая же занимается подготовкой изображения перед закраской (конвейер трансформации и освещения, T&L).


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

Точка на экране называется пиксель (pixel) а на текстуре – тексель (texel, от texture pixel). В сущности, видеокарта сопоставляет пикселю тексель. Выполняет эту нехитрую операцию конвейер растеризации – он определяет цвет пикселя, исходя из цвета текселя, а так же из условий видимости. Последнее означает, что тексель не будет отображаться, если он находится позади текселя уже нарисованного.


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


Если на один треугольник нужно наложить не одну, а несколько текстур, например, обычную текстуру и текстуру освещённости? Придется скармливать видеопроцессору один треугольник два раза. Но на помощь приходит впервые применённая NVIDIA технология под названием TwinTexel (TNT). Она позволяет при обработке одного текселя обработать также второй, в тот же момент времени, ведь глубина и первого и второго текселя одинакова, и пиксель они займут один и тот же! Поэтому видеокарты TNT брали два текселя за раз, смешивали и рисовали один пиксель. Видеокарты ATi Radeon берут уже по три, а Matrox Parhelia – четыре текселя! Правда, это было уже никому не надо, поскольку игры и по сей день редко используют более двух текстур.

Если вывести треугольник с наложенной текстурой прямо так, как он есть, мы получим ужастик. Поскольку наклоненная текстура будет сжиматься, лишь отдельные счастливые тексели попадут на экран, в следующий же кадр попадут уже другие. Картинка начнёт переливаться при малейшем шевелении мышью. Для борьбы с этим применяют метод, называемый мип-мэппинг (mip-mapping). Он заключается в том, что текстура заранее просчитывается в разрешении, меньшем чем исходное, и используется на далёких треугольниках. Об этом подробнее.


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


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


конвейером трансформации и освещения

Изначально, (3dfx Voodoo - банкрот), то есть с появлением видеоакселераторов на рынке, они умели только накладывать текстуры на треугольники. И всё. Не было ни фильтрации, ни мультитекстурирования, даже освещение текстур приходилось рассчитывать с помощью центрального процессора. Сначала фильтрацию, а затем и освещение переложили на многострадальные видеопроцессоры. Однако такое освещение, какое умели делать первые карты, оснащённые такой возможностью, было предельно простым. Поскольку треугольник – фигура плоская, то и освещён он одинаково. А то, что источники света чаще всего точечные, тихо замалчивалось. Первой пролила свет на тайну освещения фирма 3dfx, тогдашний лидер индустрии. Её метод, названный Dot Product, реализован и в современных картах, однако считается устаревшим. Гораздо более продвинутую модель освещения представила фирма Matrox.

T&L, Transforming & Lighting, трансформация и освещение – впервые появился в GeForce256. T&L получает от программы вместе с данными о треугольниках, данные об источниках света. И далее сам, без ансамбля, рассчитывает освещение каждого треугольника, учитывая игру света и тени. Т.е. тени он тоже сам рассчитывает! После такого процессор может вздохнуть спокойно. Однако, основным недостатком T&L до сих пор было то, что он был менее производителен, чем конвейер растеризации. Более того, при расчете каждого источника света, сцену приходилось перестраивать заново, в результате чего программы даже немного притормаживали. В GeForce2 T&L был усилен. На сегодняшний день блок T&L, в силу его неоспоримых достоинств, является стандартом и присутствует в любой современной видеокарте.


Под трансформацией понимается изменение (морфинг) вершин треугольников. Т.е. многострадальный блок T&L, получив координаты треугольников и координаты, куда эти треугольники засунуть, выполнял означенную операцию сам. Программисты после этого вконец обленились. Естественно, ведь большую часть работы выполняет видеокарта! Кстати, именно после введения в обиход блока T&L, чипы на картах стали гордо именоваться GPU.

После выхода в свет спецификации на T&L, NVIDIA придумала пойти ещё дальше, в дебри профессиональных ускорителей – там она отыскала замечательную штуку, которую тут же реализовала в подвернувшемся чипе нового поколения (GeForce2). Штука называется шейдером. Надо сказать, что реализация оказалась неудачной по вине производителя одной очень популярной операционной системы.


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


Шейдеры бывают двух видов – вершинные и пиксельные. Отличаются они тем, что вершинные определяют освещенность точки на треугольнике, в зависимости от положения её относительно вершин. Пиксельные же позволяют управлять освещением каждого пикселя по отдельности. Вершинные шейдеры могут эмулироваться программно. Пиксельные же нет. С появлением шейдеров GPU чаще стали называть VPU.

Видеопроцессор обладает огромными мощностями. Возможностей GeForce2 уже хватало для игры в Quake III с разрешением экрана 1600*1200 (разрешений мы ещё коснёмся в главе, посвящённой видеовыходу). Однако видеокарту сдерживает другой компонент –


видеопамять.
  • текстуры;
  • координаты треугольников;
  • координаты, интенсивность и цвета источников освещения;
  • буфер кадра

Память для видеоадаптеров на сегодняшний день применяется только одного типа - DRAM (Dynamic Random Access Memory (SGRAM - Synchronous Graphic Random Access Memory), динамическая оперативная память). Она бывает двух видов - SDR DRAM и DDR DRAM.


Современные типы памяти, даже обладая гигантскими пропускными способностями, не способны удовлетворить растущие потребности GPU. Первой это заметила компания ATi, которая предложила ряд мер по уменьшению нагрузки на память. На чипе Radeon256 было применено сразу несколько технологий, носящих собирательное название HyperZ.
  • Hierarchical Z - сцена, а точнее Z-буфер, разбиваются на небольшие участки, которые целиком умещаются в быстрой памяти самого GPU, и далее все операции проводятся в этом буфере с огромной скоростью. Причём видеочип сначала смотрит грубо, а рассматривать ли ему эту область или там один треугольник напрочь забивает всё остальное. Если надо рассмотреть, то сцена просчитывается точнее, потом ещё точнее.
  • Fast Z Clear - предназначена для быстрой очистки Z-буфера в памяти. Дело в том, что для очистки памяти от прежних значений, видеочипу раньше приходилось после отрисовки кадра забивать область Z-буфера единицами. Новая технология позволяет делать это быстрее
  • Z-compression Позволяет сжимать данные в Z-буфере как архиватор. Это также уменьшает объём, который надо прокачать по шине данных.

От NVIDIA Crossbar Memory Controller - к памяти обращается не один контроллер шириной 128 бит (по ширине памяти), а сразу четыре шириной 32 бита. Поскольку видеопроцессору часто требуются данные из разных мест, такая организация памяти гораздо лучше традиционной. Также эта карта оснащена всем арсеналом средств по работе с Z-буфером а-ля HyperZ.


В проф. Картах применяется метод с разделением памяти. Берётся 32Мб дешёвенькой SDRAM и используется только под буфер кадра. Берётся 16Мб сверхбыстрой SRAM и используется под Z-буфер. Берется обычная по скорости DDR DRAM и задействуется под текстуры. Отдельная память - для T&L, для буфера теней (есть и такой), для всего остального. В бытовых же акселераторах применяется одна память на всё.


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

разъемы.


AGP (Accelerated Graphic Port, ускоренный графический порт). Преимущества этого разъёма перед классическим PCI огромно. Они проявляются в:
  • высокой скорости передачи данных;
  • низкой латентности;
  • отсутствию арбитров шины;
  • возможностью резервирования части оперативной памяти и прямого доступа к ней.

Вывод на монитор: Существует ряд стандартных значений для разрешений - 640*480, 800*600, 1024*768, 1152*864, 1280*1024, 1600*1200, 2048*1536 и некоторые другие. На каждую точку на экране отводится некоторое число бит для хранения информации о цвете. Стандартно 8, 16, 24, 32 бита. Однако обычный монитор на электронно-лучевой трубке - устройство аналоговое. И взять картинку напрямую из памяти он не может. Эту операцию выполняет RAMDAC (Random Access Memory Digital Analog Converter, цифро-аналоговый преобразователь оперативного запоминающего устройства.

Это устройство вытаскивает из памяти (при этом память намертво блокируется для видеопроцессора и AGP) буфер кадра и преобразует набор цифр в аналоговый сигнал, понятный для монитора. Основной параметр - частота. Она определяется следующим образом: число точек по горизонтали умножаем на число точек по вертикали и умножаем на величину кадровой развёртки в герцах. Для самых крутых мониторов это: 2048*1536*85 = 267386880. Или 267 МГц. Современные видеокарты позволяют работать и на 2048*1536*120 = 377487360 или 380 МГц. Нормальному же монитору эти прелести не нужны, но чем больше максимальная частота RAMDAC, тем качественней картинка на меньших частотах.

Простейший разъём зовётся D-Sub и представляет собой 15-контактную маленькую колодку. По кабелю по отдельным проводам передаются сигналы трёх цветов и синхронизации. На мониторе эти сигналы управляют соответственно электронными пушками трёх цветов и блоком развёртки. Недостаток такого подключения в том, что сигналы идут в одном кабеле и наводятся друг не друга.

Новый интерфейс - DVI (Digital Visual Interface) - DVI-A, DVI-D

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

Вопрос производительности. FPS.

Стандарты видеокарт – CGA, EGA, VGA, SVGA.

GPU выпускаются для настольных ПК, игровых приставок, проф. Систем, мобильный решения: КПК, телефоны.


Принципы работы 3D

Procedural Textures


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

Bump Mapping/Specular Bump Mapping


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

Бампмаппинг был разработан Блинном (Blinn) еще в 1978 году, нормали поверхности при этом методе наложения рельефа изменяются на основе информации из карт высот (bump map).

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

Составляющие освещения: ambient, diffuse и specular составляющих от всех источников света в сцене.

Равномерная (ambient) составляющая освещения - аппроксимация глобального освещения, "начальное" освещение для каждой точки сцены, при котором все точки освещаются одинаково и освещенность не зависит от других факторов.
Диффузная (diffuse) составляющая освещения зависит от положения источника освещения и от нормали поверхности. Эта составляющая освещения разная для каждой вершины объекта, что придает им объем. Свет уже не заполняет поверхность одинаковым оттенком.
Бликовая (specular) составляющая освещения проявляется в бликах отражения лучей света от поверхности. Для ее расчета, помимо вектора положения источника света и нормали, используются еще два вектора: вектор направления взгляда и вектор отражения. Specular модель освещения впервые предложил Фонг (Phong Bui-Tong).

Наложение карт смещения ( Displacement Mapping) является методом добавления деталей к трехмерным объектам. В отличие от бампмаппинга и других попиксельных методов, когда картами высот правильно моделируется только освещенность точки, но не изменяется ее положение в пространстве, что дает лишь иллюзию увеличения сложности поверхности, карты смещения позволяют получить настоящие сложные 3D объекты из вершин и полигонов, без ограничений, присущих попиксельным методам. Этот метод изменяет положение вершин треугольников, сдвигая их по нормали на величину, исходя из значений в картах смещения. Карта смещения (displacement map) - это обычно черно-белая текстура, и значения в ней используются для определения высоты каждой точки поверхности объекта (значения могут храниться как 8-битные или 16-битные числа), схоже с bumpmap. Часто карты смещения используются (в этом случае они называются и картами высот) для создания земной поверхности с холмами и впадинами.


Normal Mapping


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

В общем, как и бампмаппинг, это тоже "дешевый" метод для добавления детализации к моделям сравнительно низкой геометрической сложности, без использования большего количества реальной геометрии. 1984 год.


Parallax Mapping/Offset Mapping(Virtual Displacement Mapping, Per-Pixel Displacement Mapping)


Это метод для наложения текстур, основанный на информации о глубине. Kaneko в 2001 представил parallax mapping, который стал первым эффективным методом для попиксельного отображения эффекта параллакса. В 2004 году Welsh продемонстрировал применение параллаксмаппинга на программируемых видеочипах.

Параллаксмаппинг - это еще одна альтернатива техникам бампмаппинга и нормалмаппинга, которая дает еще большее представление о деталях поверхности, более натуралистичное отображение 3D поверхностей, также без слишком больших потерь производительности. Это техника похожа одновременно на наложение карт смещения и нормалмаппинг, это нечто среднее между ними. Метод тоже предназначен для отображения большего количества деталей поверхности, чем есть в исходной геометрической модели. Он похож на нормалмаппинг, но отличие в том, что метод искажает наложение текстуры, изменяя текстурные координаты так, что когда вы смотрите на поверхность под разными углами, она выглядит выпуклой, хотя в реальности поверхность плоская и не изменяется. Иными словами, Parallax Mapping - это техника аппроксимации эффекта смещения точек поверхности в зависимости от изменения точки зрения.


Postprocessing (Постобработка)


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


High Dynamic Range (HDR)


High Dynamic Range (HDR) в применении к 3D графике - это рендеринг в широком динамическом диапазоне. Суть HDR заключается в описании интенсивности и цвета реальными физическими величинами. Привычной моделью описания изображения является RGB, когда все цвета представлены в виде суммы основных цветов: красного, зеленого и синего, с разной интенсивностью в виде возможных целочисленных значений от 0 до 255 для каждого, закодированных восемью битами на цвет. Отношение максимальной интенсивности к минимальной, доступной для отображения конкретной моделью или устройством, называется динамическим диапазоном. Так, динамический диапазон модели RGB составляет 256:1 или 100:1 cd/m2 (два порядка). Эта модель описания цвета и интенсивности общепринято называется Low Dynamic Range (LDR).

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

Сами устройства отображения данных пока что серьезно улучшить нельзя, а отказаться от LDR при расчетах имеет смысл, можно использовать реальные физические величины интенсивности и цвета (или линейно пропорциональные), а на монитор выводить максимум того, что он сможет. Суть представления HDR в использовании значений интенсивности и цвета в реальных физических величинах или линейно пропорциональных и в том, чтобы использовать не целые числа, а числа с плавающей точкой с большой точностью (например, 16 или 32 бита). Это снимет ограничения модели RGB, а динамический диапазон изображения серьезно увеличится. Но затем любое HDR изображение можно вывести на любом средстве отображения (том же RGB мониторе), с максимально возможным качеством для него при помощи специальных алгоритмов tone mapping.

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

Tone Mapping


Tone mapping - это процесс преобразования диапазона яркостей HDR к LDR диапазону, отображаемому устройством вывода, например, монитором или принтером, так как вывод HDR изображений на них потребует преобразования динамического диапазона и цветового охвата модели HDR в соответствующий динамический диапазон LDR, чаще всего модель RGB.

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

Motion Blur - Смазывание в движении (motion blur) происходит при фото- и киносъемке из-за движения объектов в кадре в течение времени экспозиции кадра, в то время, когда затвор объектива открыт.


Depth of field (глубина резкости) - это размывание объектов в зависимости от их положения относительно фокуса камеры. В реальной жизни, на фотографиях и в кино мы видим одинаково четко не все объекты, это связано с особенностью строения глаза и устройства оптики фото- и киноаппаратов. У фото- и кинооптики есть определенное расстояние, объекты, расположенные на таком расстоянии от камеры находятся в фокусе и выглядят на картинке резкими, а более удаленные от камеры или приближенные к ней объекты выглядят, наоборот, размытыми, резкость снижается постепенно при увеличении или снижении расстояния.

Level Of Detail (LOD) -Уровень детализации (level of detail) в 3D приложениях - это метод снижения сложности рендеринга кадра, уменьшения общего количества полигонов, текстур и иных ресурсов в сцене, общее снижение её сложности.



Global Illumination


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

Алгоритмы освещения можно разделить на две модели: прямое или локальное освещение и глобальное освещение (direct или local illumination и global illumination). Прямое – учитываются только прямые лучи от источников и их преломления.

В глобальной модели освещения, global illumination, рассчитывается освещение с учетом влияния объектов друг на друга, учитываются многократные отражения и преломления лучей света от поверхностей объектов, каустика (caustics) и подповерхностное рассеивание (subsurface scattering). Эта модель позволяет получить более реалистичную картинку, но усложняет процесс, требуя заметно больше ресурсов.


Программный 3D интерфейс – OpenGL, Direct3D.

OpenGL - это графический стандарт в области компьютерной графики. На данный момент он является одним из самых популярных графических стандартов во всём мире. Ещё в 1982 г. в Стенфордском университете была разработана концепция графической машины, на основе которой фирма Silicon Graphics в своей рабочей станции Silicon IRIS реализовала конвейер рендеринга. Таким образом была разработана графическая библиотека IRIS GL. На основе библиотеки IRIS GL, в 1992 году был разработан и утверждён графический стандарт OpenGL. Разработчики OpenGL - это крупнейшие фирмы разработчики как оборудования так и программного обеспечения: Silicon Graphics, Inc., Microsoft, IBM Corporation, Sun Microsystems, Inc., Digital Equipment Corporation (DEC), Evans & Sutherland, Hewlett-Packard Corporation, Intel Corporation и Intergraph Corporation.

OpenGL переводится как Открытая Графическая Библиотека (Open Graphics Library), это означает, что OpenGL - это открытый и мобильный стандарт. Программы, написанные с помощью OpenGL можно переносить практически на любые платформы, получая при этом одинаковый результат, будь это графическая станция или суперкомпьютер. OpenGL освобождает программиста от написания программ для конкретного оборудования. Если устройство поддерживает какую-то функцию, то эта функция выполняется аппаратно, если нет, то библиотека выполняет её программно.

Одним из главных конкурентов считается Direct3D из пакета DirectX, разработанный фирмой Microsoft. Direct3D создавался исключительно для игровых приложений. Если сравнивать эти две библиотеки, то нельзя сказать, что одна из них лучше, а другая хуже, у каждой библиотеки имеются свои особенности. Например, если сравнивать их в плане переносимости программ с одной платформы на другую, то Direct3D будет работать только на Intel платформах под управлением операционной системы Windows, в то время программы, написанные с помощью OpenGL можно успешно перенести на такие платформы как Unix, Linux, SunOS, IRIX, Windows, MacOS и многие другие. А вот в плане объектно-ориентированного подхода OpenGL уступает Direct3D. OpenGL работает по принципу конечного автомата, переходя из одного состояния в другое, совершая при этом какие-то преобразования. Ещё одним преимуществом Direct3D является поддержка дешёвого оборудования.

GLide до недавнего времени тоже являлся довольно широко используемым стандартом для игровых приложений. Этот стандарт создала фирма 3Dfx и библиотека GLide создавалась исключительно для видео ускорителей фирмы 3Dfx Voodoo и была оптимизирована исключительно под них. GLide является более низкоуровневым по отношению к OpenGL и по своим командам похож на него. GLide мало чем отличается от OpenGL по своим возможностям, за исключением некоторых функций, которые специально предназначались для Voodoo ускорителей. Но к сожалению 3Dfx отказалась от этого стандарта, передав его в руки разработчиков открытого программного обеспечения.

Есть ещё несколько библиотек, среди них можно отметить Heidi. Heidi это библиотека или даже лучше сказать драйвер для визуализации трёхмерных сцен, используемый только в 3D Studio Max и только под Windows NT.

Стоит также отметить совместную разработку двух гигантов - Microsoft и Silicon Graphics в области стандартизации компьютерной графики. Этот проект носит название Fahrenheit и сейчас находится в стадии разработки.