Эффект удаленного зеркального освещения
Используйте дистанционный-спекулярный эффект освещения, чтобы создать изображение, которое выглядит как отражающая поверхность, где источник света кажется поступающим из большого расстояния (например, солнце или верхний свет). Этот эффект использует альфа-канал в качестве карты высоты и освещает изображение с дальним источником света.
Цвет выходного растрового изображения является результатом светлого цвета, положения света и геометрии поверхности. Выходные данные альфа-канала для каждого пикселя с зеркальным освещением — максимальное количество выходных данных красного, зеленого и синего каналов для этого пикселя.
CLSID для этого эффекта — это CLSID_D2D1DistantSpecular.
- пример изображения
- Далекий источник света
- свойства эффекта
- режимы масштабирования
- требования
- Связанные темы
Пример изображения
В примере показаны входные и выходные изображения эффекта дальнего зеркального освещения.
Окончательный растровый рисунок выходных данных можно вычислить с помощью следующих уравнений.
где
- k? = константа зеркального освещения.

ru-RU:

Cr, Cg, Cb = светлый цвет в компонентах RGB.
Удаленный источник света
На рисунке ниже показан пример направления света от удаленного источника света.
Эффект использует параметры азимута и угла возвышения для вычисления вектора света , используя следующие уравнения:
where Light?, Lighty, и Lightz являются значениями положения света.
Свойства эффекта
Отображаемое имя и перечисление индексов | Описание |
---|---|
Азимут D2D1_DISTANTSPECULAR_PROP_AZIMUTH |
Угол направления источника света в плоскости XY относительно оси X против часовой стрелки. Единицы находятся в градусах и должны находиться в диапазоне от 0 до 360 градусов. Тип FLOAT. Значение по умолчанию — 0.0f. |
Возвышенность D2D1_DISTANTSPECULAR_PROP_ELEVATION |
Угол направления источника света в плоскости YZ относительно оси Y в направлении счетчика часов. Единицы находятся в градусах и должны находиться в диапазоне от 0 до 360 градусов. Тип FLOAT. Значение по умолчанию — 0.0f. |
Коэффициент зеркального блеска D2D1_DISTANTSPECULAR_PROP_SPECULAR_EXPONENT |
Экспонента для зеркального компонента в уравнении освещения Фонга. Большее значение соответствует более отражающей поверхности. Значение является безразмерным и должно находиться в диапазоне от 1,0 до 128. Тип FLOAT. Значение по умолчанию — 1.0f. |
SpecularConstant D2D1_DISTANTSPECULAR_PROP_SPECULAR_CONSTANT |
Соотношение зеркального отражения к входящему свету. Это значение является безразмерным и должно составлять от 0 до 10 000. Тип FLOAT. Значение по умолчанию — 1.0f. |
SurfaceScale D2D1_DISTANTSPECULAR_PROP_SURFACE_SCALE |
Коэффициент масштабирования в направлении Z. Это значение является безразмерным и должно находиться в диапазоне от 0 до 10 000. Тип FLOAT. Значение по умолчанию — 1.0f. |
Цвет D2D1_ДАЛЬНИЙЗЕРКАЛЬНЫЙ_СВОЙСТВО_ЦВЕТ |
Цвет входящего света. Это свойство предоставляется как D2D1_VECTOR_3F (R, G, B) и используется для вычисления LR, LG, LB. Тип D2D1_VECTOR_3F. Значение по умолчанию — {1.0f, 1.0f, 1.0f}. |
KernelUnitLength D2D1_DISTANTSPECULAR_PROP_KERNEL_UNIT_LENGTH |
Размер элемента в ядре Sobel, используемый для создания нормальной поверхности в направлении X и Y. Это свойство представляет собой D2D1_VECTOR_2F (длина единицы ядра X, длина единицы ядра Y) и определяется в (независимых от устройства пикселях (DIPs)/единицах ядра). Эффект использует двулинейную интерполяцию для масштабирования растрового изображения для сопоставления размера элементов ядра. Тип D2D1_VECTOR_2F. Значение по умолчанию — {1.0f, 1.0f}. |
Режим Масштабирования D2D1_DISTANTSPECULAR_PROP_SCALE_MODE |
Режим интерполяции, который эффект использует для масштабирования изображения до соответствующей длины единицы ядра. Существует шесть режимов масштабирования, которые отличаются качеством и скоростью. Тип D2D1_DISTANTSPECULAR_SCALE_MODE. Значение по умолчанию — D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR. |
Режимы масштабирования
Перечисление | Описание |
---|---|
D2D1_DISTANTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR | Отбирается ближайшая точка и используется она. В этом режиме используется меньше времени обработки, но выводится изображение с наименьшим качеством. |
D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR | Использует четырехточечный образец и линейную интерполяцию. Этот режим выводит изображение более высокого качества, чем ближайший сосед. |
D2D1_DISTANTSPECULAR_SCALE_MODE_CUBIC | Использует 16 примеров кубового ядра для интерполяции. В этом режиме используется максимальное время обработки, но выводится более качественный образ. |
D2D1_DISTANTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR | Использует 4 линейных семпла в одном пикселе для хорошего сглаживания краев. Этот режим подходит для уменьшения масштаба на небольшие величины на изображениях с малым количеством пикселей. |
D2D1_DISTANTSPECULAR_SCALE_MODE_ANISOTROPIC | Использует анисотропную фильтрацию для выборки шаблона в соответствии с преобразованной формой растрового изображения. |
D2D1_DISTANTSPECULAR_SCALE_MODE_высокое_качество_кубическая | Использует ядро высокого качества с переменным размером для предварительного уменьшения масштаба изображения, если уменьшение масштаба участвует в матрице преобразования. Затем используется режим интерполяции кубов для конечных выходных данных. |
Заметка
Если вы не выберете режим, эффект по умолчанию используется для D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR.
Требования
Требование | Ценность |
---|---|
Минимальный поддерживаемый клиент | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальный поддерживаемый сервер | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |