Файл: Лекции Компьютерная графика.pdf

Добавлен: 29.10.2018

Просмотров: 6931

Скачиваний: 24

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

рендеринге

— белая вспышка, на программном — белая вспышка и пикселизиро-

ванный экран.

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

были изобретены шейдеры. Предшественниками шейдеров были процедурная ге-

нерация текстур (широко применявшаяся в Unreal для создания анимированных тек-

стур воды и огня) и мультитекстурирование (на нём был основан язык шейдеров,

применявшийся в Quake 3). Но и эти механизмы не обеспечивают такой гибкости,

как шейдеры.

В настоящее время шейдеры делятся на четыре типа:

• вершинные

;

• геометрические

;

• параллаксные

;

• фрагментные (пиксельные)

.

Вершинный шейдер

оперирует данными, сопоставленными с вершинами мно-

гогранников. К таким данным, в частности, относятся координаты вершины в про-

странстве, текстурные координаты, тангенс-вектор, вектор бинормали, вектор нор-

мали. Вершинный шейдер может быть использован для видового и перспектив-

ного преобразования вершин, генерации текстурных координат, расчёта освещения

и т. д.

Геометрический шейдер

, в отличие от вершинного, способен обработать не

только одну вершину, но и целый примитив. Это может быть отрезок (две верши-

ны) и треугольник (три вершины), а при наличии информации о смежных вершинах

(adjacency) может быть обработано до шести вершин для треугольного примитива.

Кроме того, геометрический шейдер способен генерировать примитивы «на ле-

ту», не задействуя при этом центральный процессор. Впервые данный шейдер начал

использоваться на видеокартах nVidia серии 8. Фрагментный шейдер работает

с фрагментами изображения. Под фрагментом изображения в данном случае по-

нимается пиксель, которому поставлен в соответствие некоторый набор атрибутов,

таких как цвет, глубина, текстурные координаты. Фрагментный шейдер исполь-

зуется на последней стадии графического конвейера для формирования фрагмента

изображения.

Шейдерные языки

обычно содержат специальные типы данных, такие как

цвет

и нормаль. Поскольку компьютерная графика имеет множество сфер прило-

жения, для удовлетворения различных потребностей рынка было создано большое

количество шейдерных языков.

Впервые использованные в системе RenderMan компании Pixar, шейдеры по-

лучали всё большее распространение со снижением цен на компьютеры. Основное

преимущество от использования шейдеров — их гибкость, упрощающая и удешев-

ляющая цикл разработки программы и при этом повышающая сложность и досто-

верность визуализируемых сцен.

Рассмотрим наиболее распространённые шейдерные языки.

35


background image

Шейдерный язык RenderMan

является фактическим стандартом для про-

фессионального рендеринга. API RenderMan, разработанный Робом Куком (Rob
Cook

), используется во всех работах студии Pixar и не только. В 2004 г. этот пакет

использовали в съёмках тридцати пяти из тридцати девяти фильмов, номиниро-

ванных на «Оскар» в категории «Лучшие визуальные эффекты».

RenderMan

также

является первым из реализованных шейдерных языков.

nVidia Gelato

представляет собой оригинальную гибридную систему ренде-

ринга

изображений и анимации трёхмерных сцен и объектов, использующую для

расчётов центральные процессоры и аппаратные возможности профессиональных

видеокарт серии Quadro FX .

Шейдерный язык OpenGL

носит название GLSL (The OpenGL Shading

Language). GLSL основан на языке ANSI C. Большинство возможностей языка
ANSI C

сохранено, к ним добавлены векторные и матричные типы данных, часто

применяющиеся при работе с трёхмерной графикой. В контексте GLSL шейдером

называется независимо компилируемая единица, написанная на этом языке. Про-

граммой называется набор откомпилированных шейдеров, связанных вместе.

Низкоуровневый шейдерный язык DirectX (DirectX ASM)

по синтак-

сису сходен с Ассемблером. Существует несколько версий, различающихся по на-

бору команд, а также по требуемому оборудованию, есть разделение на вершинные
(vertex)

и пиксельные (pixel) шейдеры.

Высокоуровневый шейдерный язык DirectX HLSL

(HLSL — High Level

Shader Language) является надстройкой над DirectX ASM. По синтаксису сходен

с C, позволяет использовать структуры, процедуры и функции.

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

разработан nVidia совместно с Microsoft (та-

кой же по сути язык от Microsoft — HLSL, включён в DirectX 9). Cg расшифровы-

вается как «C for Graphics». Язык использует схожие с C типы (

int, float), а также

специальный 16-битный тип с плавающей запятой —

half, обладает оптимизацией в

виде упакованных массивов. Поддерживаются функции и структуры (см. рис.

1.18

).

Несмотря на то, что язык разработан nVidia, он без проблем работает и с видео-

картами ATI.

Следует учесть, что все шейдерные программы обладают своими особенно-

стями, которые следует получить от разработчика.

Математическая модель

Передовое программное обеспечение обычно совмещает в себе несколько техник,

чтобы получить достаточно качественное и фотореалистичное изображение за при-

емлемые затраты вычислительных ресурсов.

Реализация механизма рендеринга всегда основывается на физической модели.

Производимые вычисления относятся к той или иной физической или абстрактной

модели. Основные идеи просты для понимания, но сложны для применения.

36


background image

Рис. 1.18. Изображение, отрендеренное в POV-Ray 3.6. Модель игральной кости со-

здана в Cinema 4D, остальное — при помощи Rhinoceros 3D

Основное уравнение

Ключом к теоретическому обоснованию моделей рендеринга служит уравне-

ние рендеринга

. Оно является наиболее полным формальным описанием части

рендеринга

, не относящейся к восприятию конечного изображения. Все модели

представляют собой какое-то приближённое решение этого уравнения.

L

o

(x, ~

ω) = L

e

(x, ~

ω) +

Z

f

r

(x, ~

ω

0

, ~

ω)L

i

(x, ~

ω

0

)(~

ω

0

· ~n)d~

ω

0

,

где L

o

— количество светового излучения, исходящего из определённой точки в опре-

делённом направлении; L

e

— собственное излучение; L

i

— приходящее излучение; f

r

— коэффициент отражения.

Иначе говоря, количество светового излучения, исходящего из определённой точ-

ки в определённом направлении, есть собственное излучение и отражённое излуче-

ние. Отражённое излучение есть сумма по всем направлениям приходящего излуче-

ния, умноженного на коэффициент отражения из данного угла.

Объединяя в одном уравнении приходящий свет с исходящим в одной точке, это

уравнение составляет описание всего светового потока в заданной системе.

Рендереры

Ниже перечислены наиболее распространённые рендереры.

• 3Delight

;

• AIR

;

• ART

;

• AQSIS

;

• Angel

;

• BMRT

(Blue Moon Rendering Tools) (распространение прекращено);

37


background image

• Brazil R/S

;

• BusyRay

;

• Entropy

(продажи прекращены);

• finalRender

;

• Fryrender

;

• Gelato

(разработка прекращена в связи с покупкой nVidia, mental ray);

• Holomatix Renditio

(интерактивный raytracer);

• Indigo Renderer

;

• mental ray

;

• Kerkythea

;

• LuxRender

;

• Maxwell Render

;

• Meridian

;

• POV-Ray

;

• Pixie

;

• RenderDotC

;

• RenderMan

(PhotoRealistic RenderMan, Pixar’s RenderMan);

• Sunflow

;

• Turtle

;

• V-Ray

;

• YafRay

;

• Octane Render

;

• Arion Renderer

.

38


background image

Рендереры работающие в реальном времени

• VrayRT

;

• FinalRender

;

• iray

;

• Shaderlight

;

• Showcase

;

• Rendition

;

• Brazil IR

.

Пакеты трёхмерного моделирования, имеющие собственные рендереры

• Autodesk 3ds Max

(Scanline);

• Autodesk Maya

(Software Hardware, Vector);

• Blender

;

• NewTek LightWave 3D

;

• Maxon Cinema 4D

(Advanced Render);

• SketchUp

;

• Daz3D Bryce

;

• Luxology Modo

;

• e-on Software Vue

;

• SideFX Houdini

;

• Terragen

, Terragen 2.

7.

Конвертеры файлов

7.1. NetPBM

NetPBM

распространяется бесплатно. Автор — Джеф Посканзер (Jef Poskanzer),

Брайэн Хендерсон

(Bryan Henderson).

Формат черно-белых изображений PBM был разработан Джефом Посканзером

(Jef Poskanzer). Формат был достаточно простым, чтобы PBM-изображения могли

пересылаться по электронной почте без порчи данных. В 1988 году Poskanzer выпу-

стил Pbmplus — предшественника современного пакета Netpbm. К концу 1988 года

Посканзер разработал форматы PGM (для полутоновых) PPM (для цветных) изоб-

ражений, которые могли обрабатываться Pbmplus.

39