netlib.narod.ru< Назад | Оглавление | Далее >

7.1. Формулы смешивания

Взгляните на рис. 7.1, где красный чайник изображен поверх фоновой картинки с текстурой деревянного ящика.


Рис. 7.1. Непрозрачный чайник

Рис. 7.1. Непрозрачный чайник


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


Рис. 7.2. Прозрачный чайник

Рис. 7.2. Прозрачный чайник


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

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



ПРАВИЛО


Сперва рисуйте объекты, которые не используют смешивание. Затем отсортируйте объекты, которые используют смешивание, по расстоянию от камеры; наиболее эффективно эта операция выполняется, если объекты находятся в пространстве вида — в этом случае достаточно отсортировать их по значению координаты Z. После этого рисуйте использующие смешивание объекты начиная от самых дальних и заканчивая самыми близкими.



При смешивании значений двух пикселей используется следующая формула:


ИтоговыйПиксель = ПиксельИсточника  КоэффициентСмешиванияИсточника + ПиксельПриемника  КоэффициентСмешиванияПриемника


Каждая из переменных в этой формуле является четырехмерным цветовым вектором (rgba), а символ означает операцию перемножения компонент.

Благодаря коэффициентам смешивания источника и приемника можно различными способами модифицировать исходные пиксели источника и приемника, что позволяет реализовать различные эффекты. В разделе 7.2 описаны предопределенные значения, которые можно использовать.

По умолчанию смешивание запрещено; чтобы разрешить его, присвойте режиму визуализации D3DRS_ALPHABLENDENABLE значение true:

Device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);

 

СОВЕТ
Смешивание — достаточно сложная и ресурсоемкая операция и ее надо разрешать только для тех объектов, которым она необходима. Закончив визуализацию этих объектов, смешивание следует выключить. Также попытайтесь объединить все треугольники, для которых необходимо смешивание и визуализировать их за один раз, чтобы избежать многократных включений и выключений смешивания в одном кадре.

netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz