Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте эффект диффузного освещения, чтобы создать изображение, которое, как представляется, является неотражающей поверхностью с светом, разбросанным во всех направлениях. Этот эффект использует альфа-канал в качестве карты высоты и освещает изображение с помощью точечного источника света.
Цвет выходного растрового изображения является результатом светлого цвета, положения света и геометрии поверхности. Выходные данные альфа-канала для каждого пикселя с диффузным освещением всегда равны 1,0.
CLSID для этого эффекта является CLSID_D2D1PointDiffuse. Чтобы использовать этот эффект, добавьте dxguid.lib в зависимости компоновщика.
- пример изображения
- свойства эффекта
- режимы масштабирования
- Требования
- Связанные темы
Пример изображения
В примере показаны входные и выходные изображения эффекта точечно-диффузного освещения.
Диффузное освещение относится к свету, который отражается в нескольких направлениях, как видно здесь.
Эффект вычисляет конечные значения пикселей выходных данных, используя следующие уравнения:
Где:
- kd = диффузная константы освещения. Задано пользователем.
= единичный вектор нормали поверхности, функция от x и y.
= вектор единицы, указывающий от поверхности к свету.Lr, Lg, Lb = светлый цвет в компонентах RGB.
Свойства эффекта
| Отображаемое имя и перечисление индексов | Описание |
|---|---|
| Позиция света D2D1_POINTDIFFUSE_PROP_LIGHT_POSITION (позиция света для точечной рассеянной поверхности) |
Положение точечного источника света. Свойство: D2D1_VECTOR_3F, определяемый как (x, y, z). Единицы находятся в независимых от устройства пикселях (DIPs) и не связаны. Тип D2D1_VECTOR_3F. Значение по умолчанию — {0.0f, 0.0f, 0.0f}. |
| ДиффузнаяКонстанта D2D1_POINTDIFFUSE_PROP_DIFFUSE_CONSTANT |
Соотношение диффузного отражения к объему входящего света. Это свойство должно находиться в диапазоне от 0 до 10 000 и не является модульным. Тип FLOAT. Значение по умолчанию — 1.0f. |
| SurfaceScale D2D1_POINTDIFFUSE_PROP_SURFACE_SCALE |
Коэффициент масштабирования в направлении Z. Масштаб поверхности является безразмерным и должен находиться в пределах от 0 до 10 000. Тип "FLOAT". Значение по умолчанию — 1.0f. |
| Цвет D2D1_POINTDIFFUSE_PROP_COLOR |
Цвет входящего света. Это свойство предоставляется в виде вектора 3 (R, G, B) и используется для вычисления LR, LG, LB. Тип D2D1_VECTOR_3F. Значение по умолчанию — {1.0f, 1.0f, 1.0f}. |
| KernelUnitLength D2D1_POINTDIFFUSE_PROP_KERNEL_UNIT_LENGTH |
Размер элемента в ядре Sobel, используемый для создания нормальной поверхности в направлении X и Y. Это свойство сопоставляется со значениями dx и dy в градиенте Sobel. Это свойство является D2D1_VECTOR_2F (длина единицы ядра X, длина единицы ядра Y) и определена в (DIPs/ядровая единица). Эффект использует двулинейную интерполяцию для масштабирования растрового изображения для сопоставления размера элементов ядра. Тип D2D1_VECTOR_2F. Значение по умолчанию — {1.0f, 1.0f}. |
| Режим масштабирования D2D1_POINTDIFFUSE_PROP_SCALE_MODE |
Режим интерполяции, который используется эффектом для масштабирования изображения до нужной длины единицы ядра. Существует шесть режимов масштабирования, которые отличаются качеством и скоростью. См. режимы масштабирования для получения дополнительной информации. Тип D2D1_POINTDIFFUSE_SCALE_MODE. Значение по умолчанию — D2D1_POINTDIFFUSE_SCALE_MODE_LINEAR. |
Режимы масштабирования
| Перечисление | Описание |
|---|---|
| D2D1_POINTDIFFUSE_SCALE_MODE_NEAREST_NEIGHBOR | Выбирает ближайшую единственную точку и использует её. В этом режиме используется меньше времени обработки, но выводится изображение с наименьшим качеством. |
| D2D1_POINTDIFFUSE_SCALE_MODE_LINEAR | Использует четырехточечный образец и линейную интерполяцию. Этот режим выводит изображение более высокого качества, чем ближайший сосед. |
| D2D1_POINTDIFFUSE_SCALE_MODE_CUBIC | Использует 16 примеров кубового ядра для интерполяции. В этом режиме используется максимальное время обработки, но выводится более качественный образ. |
| D2D1_POINTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR | Использует 4 линейных выборок в одном пикселе для хорошего сглаживания краёв. Этот режим подходит для уменьшения масштаба на небольшие значения на изображениях с малым количеством пикселей. |
| D2D1_POINTDIFFUSE_SCALE_MODE_ANISOTROPIC | Использует анисотропную фильтрацию для выборки шаблона в соответствии с преобразованной формой растрового изображения. |
| D2D1_POINTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC | Использует высококачественное кубическое ядро переменного размера для предварительного уменьшения масштаба изображения, если уменьшение масштаба участвует в матрице преобразования. Затем используется режим интерполяции кубов для конечных выходных данных. |
Заметка
Если вы не выберете режим, по умолчанию эффект устанавливается в D2D1_POINTDIFFUSE_SCALE_MODE_LINEAR.
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
| Минимальный поддерживаемый сервер | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
| Заголовок | d2d1effects.h |
| Библиотека | d2d1.lib, dxguid.lib |