Поделиться через


Эффект удаленного рассеяния освещения

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

Цвет выходного растрового изображения является результатом светлого цвета, положения света и геометрии поверхности изображения. Вывод альфа-канала для каждого пикселя с диффузным освещением всегда равен 1,0.

CLSID для этого эффекта CLSID_D2D1DistantDiffuse.

Пример изображения

В этом примере показаны входные и выходные изображения эффекта диффузного освещения.

Пример эффекта снимок экрана: входные и выходные изображения удаленного эффекта диффузного освещения.

Свойства эффекта

Отображаемое перечисление имен и индексов Описание
Азимут
D2D1_DISTANTDIFFUSE_PROP_AZIMUTH
Угол направления источника света в плоскости XY относительно оси X в направлении счетчика часов. Единицы измерения находятся в градусах и должны находиться в диапазоне от 0 до 360 градусов.
Тип — FLOAT.
Значение по умолчанию — 0,0f.
Elevation
D2D1_DISTANTDIFFUSE_PROP_ELEVATION
Угол направления источника света в плоскости YZ относительно оси Y в направлении счетчика часов. Единицы измерения находятся в градусах и должны находиться в диапазоне от 0 до 360 градусов.
Тип — FLOAT.
Значение по умолчанию — 0,0f.
ДиффузКонстант
D2D1_DISTANTDIFFUSE_PROP_DIFFUSE_CONSTANT
Отношение диффузного отражения к количеству входящего света. Это свойство должно быть в диапазоне от 0 до 10 000 и является неунитарным.
Тип — FLOAT.
Значение по умолчанию — 1,0f.
SurfaceScale
D2D1_DISTANTDIFFUSE_PROP_SURFACE_SCALE
Коэффициент масштабирования в направлении Z. Масштаб поверхности не является унитарным и должен быть в диапазоне от 0 до 10 000.
Тип — FLOAT.
Значение по умолчанию — 1,0f.
Цвет
D2D1_DISTANTDIFFUSE_PROP_COLOR
Цвет входящего света. Это свойство предоставляется в виде D2D1_VECTOR_3F (R, G, B) и используется для вычисления LR, LG, LB.
Тип — D2D1_VECTOR_3F.
Значение по умолчанию — {1.0f, 1.0f, 1.0f}.
KernelUnitLength
D2D1_DISTANTDIFFUSE_PROP_KERNEL_UNIT_LENGTH
Размер элемента в ядре Sobel, используемого для создания нормальной поверхности в направлении X и Y. Это свойство сопоставляется со значениями dx и dy в градиенте Sobel. Это свойство является D2D1_VECTOR_2F (длина единицы ядра X, длина единицы ядра Y) и определяется в (аппаратно-независимые пиксели (DIP)/единица ядра). Эффект использует билинейную интерполяцию для масштабирования растрового изображения в соответствии с размером элементов ядра.
Тип — D2D1_VECTOR_2F.
Значение по умолчанию — {1.0f, 1.0f}.
Scalemode
D2D1_DISTANTDIFFUSE_PROP_SCALE_MODE
Режим интерполяции, который используется эффектом для масштабирования изображения до соответствующей длины единицы ядра. Существует шесть режимов масштабирования, которые варьируются по качеству и скорости.
Тип — D2D1_DISTANTDIFFUSE_SCALE_MODE.
Значение по умолчанию — D2D1_DISTANTDIFFUSE_SCALE_MODE_LINEAR.

Режимы масштабирования

Перечисление Описание
D2D1_DISTANTDIFFUSE_SCALE_MODE_NEAREST_NEIGHBOR Выборка ближайшей единственной точки и ее использование. Этот режим использует меньше времени обработки, но выводит изображение самого низкого качества.
D2D1_DISTANTDIFFUSE_SCALE_MODE_LINEAR Использует выборку из четырех точек и линейную интерполяцию. В этом режиме выводится изображение более высокого качества, чем у ближайшего соседа.
D2D1_DISTANTDIFFUSE_SCALE_MODE_CUBIC Использует 16 примеров кубического ядра для интерполяции. Этот режим использует больше всего времени обработки, но выводит изображение более высокого качества.
D2D1_DISTANTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR Использует 4 линейные выборки в одном пикселе для правильного сглаживания краев. Этот режим хорошо подходит для уменьшения масштаба на небольшие объемы изображений с несколькими пикселями.
D2D1_DISTANTDIFFUSE_SCALE_MODE_ANISOTROPIC Использует анизотропную фильтрацию для выборки шаблона в соответствии с преобразованной формой растрового изображения.
D2D1_DISTANTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC Использует высокое качество кубического ядра переменного размера для предварительного уменьшения масштаба изображения, если уменьшение масштаба участвует в матрице преобразования. Затем использует режим интерполяции куба для окончательного вывода.

Примечание

Если не выбрать режим, по умолчанию эффект будет D2D1_DISTANTDIFFUSE_SCALE_MODE_LINEAR.

Требования

Требование Значение
Минимальная версия клиента Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Минимальная версия сервера Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Заголовок d2d1effects.h
Библиотека d2d1.lib, dxguid.lib

ID2D1Effect