АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Шейдеры в OpenGL

Читайте также:
  1. Консольне застосування.
  2. Необхідні теоретичні відомості.
  3. Основні поняття, використовувані в даній лабораторній роботі: контекст пристрою, контекст відтворення, формат піксела.
  4. Технология программирования Интернет
  5. Технология программирования Интернет
  6. Трехмерная графика

На базовом уровне, OpenGL — это просто спецификация, то есть документ, описывающий набор функций и их точное поведение (в данный момент OpenGL 4.0).

Производители оборудования на основе этой спецификации создают реализации — библиотеки функций, соответствующих набору функций спецификации.

Реализация использует возможности оборудования там, где это возможно. Если аппаратура не позволяет реализовать какую-либо возможность, она должна быть эмулирована программно.

Производители должны пройти специфические тесты (conformance tests — тесты на соответствие) прежде чем реализация будет классифицирована как OpenGL реализация.

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

С точки зрения программиста OpenGL - это программный интерфейс (API) для графических устройств, включающий в себя более 250 различных команд, с помощью которых программист может определять различные объекты и производить рендеринг. Говоря более простым языком, вы определяете объекты, задаёте их местоположение в трёхмерном пространстве, определяете другие параметры (поворот, масштаб,...), задаёте свойства объектов (цвет, текстура, материал,...), положение наблюдателя, а библиотека OpenGL позаботится о том чтобы отобразить всё это на экране в экранных координатах.

OpenGL является низкоуровневым процедурным API, что вынуждает программиста диктовать точную последовательность шагов, чтобы построить результирующую растровую графику (императивный подход).

Это является основным отличием от дескрипторных подходов, когда вся сцена описана в виде структуры данных (чаще всего дерева), которое обрабатывается и строится на экране.

Императивный подход требует от программиста глубокого знания законов трёхмерной графики и математических моделей, с другой стороны — даёт огромную свободу.

Результатом отсутствия встроенной поддержки OpenGL API стало появление большого числа сторонних средств-оболочек (wrappers), которые позволяют писать и обрабатывать шейдерные “программы”.

 

Шум Перлина (Perlin Noise)

Введен в 1983 г. Кеном Перлином (Ken Perlin). Перлин предложил функцию порождения случайных значений, которая стала основой почти всех фильтров генерации мраморных, деревянных поверхностей и шумов, встроенных в программы рисования и пакеты 3D-рендеринга. Работает для п измерений.

1.Изображение накрывается сеткой, представляющей диапазон вещественных чисел. На рис. шум создается на сетке, представляющей значения между 0 и 4. Каждое целое число порождает линию сетки, а значит, все стороны каждого квадрата последней имеют длину, равную единице.

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

2. В каждом узле сетки строится случайный вектор единичной длины, который указывает в случайном направлении в пределах каждого из квадратов: создается таблица из 256 векторов, которые охватывают полный круг, со случайным выбором одного из них для каждого узла сетки.

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

 

4. Порядок вычисления высоты для пиксела (х,у):

•вычислить по х и у веса и , заменив в формуле w=6 -15 +10 , t координатами х и у, найденными относительно вершин сетки;

•смешаем по формуле h = w + (1 - w с весом w= пару значений высот в верхних углах квадрата, затем в нижних и, наконец, смешаем результаты с весом w= (точно так же как для билинейной фильтрации)

 


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)