Эффект удаленного отраженного освещения
Используйте эффект удаленного освещения, чтобы создать изображение, которое представляет собой отражающую поверхность, где источник света, как представляется, исходит с большого расстояния (например, солнца или накладных огней). Этот эффект использует альфа-канал в качестве карты высоты и освещает изображение отдаленным источником света.
Цвет выходного растрового изображения является результатом светлого цвета, положения света и геометрии поверхности. Выходные данные альфа-канала для каждого пикселя с зеркальным освещением — это максимальное количество выходных данных красного, зеленого и синего каналов для этого пикселя.
CLSID для этого эффекта CLSID_D2D1DistantSpecular.
- Пример изображения
- Удаленный источник света
- Свойства эффекта
- Режимы масштабирования
- Requirements
- Связанные темы
Пример изображения
В приведенном здесь примере показаны входные и выходные изображения эффектов удаленного отражения.
Окончательное выходное растровое изображение можно вычислить с помощью следующих уравнений.
where
- K? = константная зеркального освещения.
= вектор нормальной поверхности.
= вектор единицы "на полпути" между вектором единиц глаза и вектором единицы света.
Cr, Cg, Cb = светлый цвет в rgb-компонентах.
Удаленный источник света
На изображении здесь показан пример направления света от удаленного источника света.
Эффект использует параметры азимута и высоты для вычисления С помощью следующих уравнений:
где Light?, Lighty и Lightz — это входные значения положения света.
Свойства эффекта
Отображаемое перечисление имен и индексов | Описание |
---|---|
Азимут D2D1_DISTANTSPECULAR_PROP_AZIMUTH |
Угол направления источника света в плоскости XY относительно оси X в направлении счетчика часов. Единицы измерения находятся в градусах и должны быть от 0 до 360 градусов. Тип — FLOAT. Значение по умолчанию — 0,0f. |
Elevation D2D1_DISTANTSPECULAR_PROP_ELEVATION |
Угол направления источника света в плоскости YZ относительно оси Y в направлении счетчика часов. Единицы измерения находятся в градусах и должны быть от 0 до 360 градусов. Тип — FLOAT. Значение по умолчанию — 0,0f. |
Specular Exponent 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_DISTANTSPECULAR_PROP_COLOR |
Цвет входящего света. Это свойство предоставляется в виде 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) и определяется в (независимые от устройства пиксели (DIP)/Единица ядра). Эффект использует билинейную интерполяцию для масштабирования растрового изображения в соответствии с размером элементов ядра. Тип D2D1_VECTOR_2F. Значение по умолчанию — {1.0f, 1.0f}. |
Scalemode 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_HIGH_QUALITY_CUBIC | При уменьшении масштаба в матрице преобразования используется ядро кубов высокого качества переменного размера для предварительного уменьшения масштаба изображения. Затем использует режим кубической интерполяции для окончательного вывода. |
Примечание
Если не выбрать режим, эффект по умолчанию будет D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальная версия сервера | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |