Результат добавления шума к штрихам показан на рис. 15.4.

Рис. 15.4. Наложение шума на штрихи: а - функция шума Перлина накладывается непосредственно на поверхность сферы; б- функция шума используется для корректирования параметров частоты штриховки1

15.1.7. Фрагментный шейдер штриховки

Фрагменты кода, описанные в предыдущих разделах, складываются в шейдер, приведенный в листинге 15.2. Так как частота вычисляется по текстурной координате t, полоски будут вертикальными, а не горизонтальными. Результат применения этого шейдера к модели чайника показан на рис. 15.5.

Рис. 15.5. Чайник в стиле гравюры, рендеринг которого выполнен шейдером штриховки1

Листинг 15.2. Фрагментный шейдер для имитации гравюры

const float frequency =1.0;

varying vec3 ObjPos: // координаты в пространстве объекта (для шума)

varying float V; // произвольное число

varying float Lightlntensity:

uniform sampler3D Noise: // значение Noise = 3;

void main (void)

{

float dp = length(vec2 (dFdx(V). dFdy(V))):

float logdp = -log2(dp * 8.0): float ilogdp = floor(logdp): float stripes = exp2(ilogdp):

float noise = texture3D(Noise, ObjPos).x:

float sawtooth = fract((V + noise * 0.1) * frequency * stripes); float triangle = abs(2.0 * sawtooth - 1.0);

// Выравнивание ширины штриха Листинг 15.2 (продолжение)

float transition = logdp - ilogdp:

// Сужение кончиков

triangle = abs((1.0 + transition) * triangle - transition);

const float edgew =0.3: // ширина шага

float edgeO = clamp(LightIntensity - edgew. 0.0. 1.0): float edgel = clamptlightlntensity. 0.0. 1.0): float square = 1.0 - smoothstep(edge0. edgel, triangle):

gl_FragColor = vec4 (vec3 (square). 1.0):

}

15.2. Примеры технических иллюстраций

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

Специалисты-практики разрабатывают алгоритмы для создания технических иллюстраций. Щль - максимально упростить или даже полностью автоматизировать процесс создания высококачественных технических иллюстраций в соответствии с методами их создания. Зритель получает информацию о форме объекта с помощью его освещения. Традиционного вычисления освещения бывает недостаточно для оценки тех областей объекта, что находятся в тени. В этих областях есть только постоянное рассеянное освещение. На технических иллюстрациях некоторые части объекта также изображают на черном фоне, чтобы сделать их более различимыми. Если же часть объекта, изображенная на черном фоне, сама по себе почти черная, она будет неразличима. В 1998 г. Брюс и Ами Гущ, Петер Ширли и Элейн Кохен провели анализ и составили список общих характеристик цветных иллюстраций, выполненных с помощью аэрографа и карандаша.


⇐ вернуться назад | | далее ⇒