Эффект пятна рассеянного освещения
Используйте эффект точечного диффузного освещения, чтобы создать изображение, которое представляется неотражающей поверхностью, где источник света ограничен направленным конусом света, а свет рассеян во всех направлениях. Этот эффект использует альфа-канал в качестве карты высоты и освещает изображение точечным источником света.
Цвет выходного растрового изображения является результатом светлого цвета, положения света и геометрии поверхности. Выходные данные альфа-канала для каждого пикселя с диффузным освещением всегда равно 1,0.
CLSID для этого эффекта CLSID_D2D1SpotDiffuse.
Пример изображения
В этом примере показаны входные и выходные изображения эффектов точечных диффузного освещения.
Результат вычисления конечных выходных значений пикселей вычисляется с помощью следующих уравнений:
Где:
- kd = постоянная диффузного освещения. Определяется пользователем.
= поверхностный нормальный вектор единиц измерения, функция x и y.
= вектор единицы измерения, указывающий от поверхности к свету.
Lr, Lg, Lb = светлый цвет в rgb-компонентах.
Свойства эффекта
Отображаемое перечисление имен и индексов | Тип и значение по умолчанию | Описание |
---|---|---|
LightPosition D2D1_SPOTDIFFUSE_PROP_LIGHT_POSITION |
D2D1_VECTOR_3F {0.0f, 0.0f, 0.0f} |
Положение света точечного источника света. Свойство является D2D1_VECTOR_3F определяется как (x, y, z). Единицы измерения находятся в независимых от устройства пикселях (DIP) и являются неограниченными. |
PointsAt D2D1_SPOTDIFFUSE_PROP_POINTS_AT |
D2D1_VECTOR_3F {0.0f, 0.0f, 0.0f} |
Где фокусируется точечный свет. Свойство предоставляется в виде D2D1_VECTOR_3F с (x, y, z). Единицы измерения находятся в DIP, а значения являются неограниченными. |
Фокус D2D1_SPOTDIFFUSE_PROP_FOCUS |
FLOAT 1.0f |
Фокус точечного света. Это свойство является неунитарным и определяется в диапазоне от 0 до 200. |
LimitingConeAngle D2D1_SPOTDIFFUSE_PROP_LIMITING_CONE_ANGLE |
FLOAT 90.0f |
Угол конуса, ограничивающий область, в которой проецируется свет. Свет не проецируется за пределы конуса. Ограничивающий угол конуса — это угол между осью точечного света (осью между свойствами LightPosition и PointsAt ) и конусом точечного света. Это свойство определяется в градусах и должно быть от 0 до 90 градусов. |
ДиффузНыйКонстант D2D1_SPOTDIFFUSE_PROP_DIFFUSE_CONSTANT |
FLOAT 1.0f |
Отношение диффузного отражения к количеству входящего света. Это свойство должно быть в диапазоне от 0 до 10 000 и является неунитарным. |
SurfaceScale D2D1_SPOTDIFFUSE_PROP_SURFACE_SCALE |
FLOAT 1.0f |
Коэффициент масштабирования в направлении Z. Шкала поверхности не является единой и должна быть в диапазоне от 0 до 10 000. |
Цвет D2D1_SPOTDIFFUSE_PROP_COLOR |
D2D1_VECTOR_3F {1.0f, 1.0f, 1.0f} |
Цвет входящего света. Это свойство предоставляется в виде вектора 3 (R, G, B) и используется для вычисления LR, LG, LB. |
KernelUnitLength D2D1_SPOTDIFFUSE_PROP_KERNEL_UNIT_LENGTH |
D2D1_VECTOR_2F {1.0f, 1.0f} |
Размер элемента в ядре Sobel, используемый для создания нормальной поверхности в направлении X и Y. Это свойство сопоставляется со значениями dx и dy в градиенте Sobel. Это свойство является D2D1_VECTOR_2F (длина единицы ядра X, длина единицы ядра Y) и определяется в (DIPS/единица ядра). Эффект использует билинейную интерполяцию для масштабирования растрового изображения в соответствии с размером элементов ядра. |
Scalemode D2D1_SPOTDIFFUSE_PROP_SCALE_MODE |
D2D1_SPOTDIFFUSE_SCALE_MODE D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR |
Режим интерполяции, который используется эффектом для масштабирования изображения до соответствующей длины единицы ядра. Существует шесть режимов масштабирования, которые варьируются по качеству и скорости. Дополнительные сведения см. в разделе Режимы масштабирования . |
Режимы масштабирования
Перечисление | Описание |
---|---|
D2D1_SPOTDIFFUSE_SCALE_MODE_NEAREST_NEIGHBOR | Выборка ближайшей единственной точки и ее использование. Этот режим использует меньше времени обработки, но выводит изображение самого низкого качества. |
D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR | Использует выборку из четырех точек и линейную интерполяцию. В этом режиме выводится изображение более высокого качества, чем у ближайшего соседа. |
D2D1_SPOTDIFFUSE_SCALE_MODE_CUBIC | Использует 16 примеров кубического ядра для интерполяции. Этот режим использует больше всего времени обработки, но выводит изображение более высокого качества. |
D2D1_SPOTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR | Использует 4 линейные выборки в одном пикселе для правильного сглаживания краев. Этот режим хорошо подходит для уменьшения масштаба на небольшие объемы изображений с несколькими пикселями. |
D2D1_SPOTDIFFUSE_SCALE_MODE_ANISOTROPIC | Использует анизотропную фильтрацию для выборки шаблона в соответствии с преобразованной формой растрового изображения. |
D2D1_SPOTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC | Использует высокое качество кубического ядра переменного размера для предварительного уменьшения масштаба изображения, если уменьшение масштаба участвует в матрице преобразования. Затем использует режим интерполяции куба для окончательного вывода. |
Примечание
Если не выбрать режим, по умолчанию эффект будет D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальная версия сервера | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |