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


Эффект пятна отраженного освещения

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

Цвет выходного растрового изображения является результатом цвета света, положения света, направления конуса и геометрии поверхности в соответствии с зеркальной частью модели освещения Фонга. Выходные данные альфа-канала для каждого пикселя с зеркальным освещением — это максимальное количество выходных данных красного, зеленого и синего каналов для этого пикселя.

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

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

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

Снимок экрана: пример эффекта.

Зеркальный свет относится к свету, который отражается в определенном направлении.

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

Эффект вычисляет конечные выходные значения пикселей, которые вычисляются с помощью приведенных здесь уравнений:

выходные пиксельные уравнения.

where

определения переменных.

Точечный источник света

Точечный источник света излучает свет в конусе в определенном направлении и не излучает свет за пределами конуса.

Источник точечного света вычисляет вектор света L и полупути H так же, как и эффект точечного отражения .

Эффект вычисляет цвет света Lr, Lg,L b, как функцию положения источника света, как показано с уравнениями ниже:

уравнение для точечных источников света

Символ вектора света вектора. определяется следующими уравнениями:

уравнение: vector

Символ вектора t вектора определяется следующими уравнениями:

уравнение: вектор 2

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

Отображаемое перечисление имен и индексов Описание
LightPosition
D2D1_SPOTSPECULAR_PROP_LIGHT_POSITION
Положение света точечного источника света. Свойство является D2D1_VECTOR_3F определяется как (x, y, z). Единицы измерения находятся в независимых от устройства пикселях (DIP) и являются неограниченными. Тип D2D1_VECTOR_3F.
Значение по умолчанию — {0.0f, 0.0f, 0.0f}.
PointsAt
D2D1_SPOTSPECULAR_PROP_POINTS_AT
Где фокусируется точечный свет. Свойство предоставляется в виде D2D1_VECTOR_3F с (x, y, z). Единицы измерения находятся в DIP, а значения являются неограниченными. Тип D2D1_VECTOR_3F.
Значение по умолчанию — {0.0f, 0.0f, 0.0f}.
Фокус
D2D1_SPOTSPECULAR_PROP_FOCUS
Фокус точечного света. Это свойство является неунитарным и определяется в диапазоне от 0 до 200. Тип — FLOAT.
Значение по умолчанию — 1,0f.
LimitingConeAngle
D2D1_SPOT_SPECULAR_PROP_LIMITING_CONE_ANGLE
Угол конуса, ограничивающий область, в которой проецируется свет. Свет не проецируется за пределы конуса. Ограничивающий угол конуса — это угол между осью точечного света (осью между свойствами LightPosition и PointsAt ) и конусом точечного света. Это свойство определяется в градусах и должно быть от 0 до 90 градусов. Тип — FLOAT.
Значение по умолчанию — 90,0f.
Specular Exponent
D2D1_SPOTSPECULAR_PROP_SPECULAR_EXPONENT
Экспонента для спектрального термина в уравнении освещения Фонга. Большее значение соответствует более отражающей поверхности. Это значение является неунитарным и должно находиться в диапазоне от 1,0 до 128. Тип — FLOAT.
Значение по умолчанию — 1,0f.
SpecularConstant
D2D1_SPOTSPECULAR_PROP_SPECULAR_CONSTANT
Отношение зеркального отражения к входящему свету. Значение является неунитарным и должно находиться в диапазоне от 0 до 10 000. Тип — FLOAT.
Значение по умолчанию — 1,0f.
SurfaceScale
D2D1_SPOTSPECULAR_PROP_SURFACE_SCALE
Коэффициент масштабирования в направлении Z для создания карты высоты. Значение является неунитарным и должно находиться в диапазоне от 0 до 10 000. Тип — FLOAT.
Значение по умолчанию — 1,0f.
Цвет
D2D1_SPOTSPECULAR_PROP_COLOR
Цвет входящего света. Это свойство предоставляется в виде вектора 3 (R, G, B) и используется для вычисления LR, LG, LB. Тип D2D1_VECTOR_3F.
Значение по умолчанию — {1.0f, 1.0f, 1.0f}.
KernelUnitLength
D2D1_SPOTSPECULAR_PROP_KERNEL_UNIT_LENGTH
Размер элемента в ядре Sobel, используемый для создания нормальной поверхности в направлении X и Y. Это свойство сопоставляется со значениями dx и dy в градиенте Sobel. Это свойство является D2D1_VECTOR_2F (длина единицы ядра X, длина единицы ядра Y) и определяется в (DIPS/единица ядра). Эффект использует билинейную интерполяцию для масштабирования растрового изображения в соответствии с размером элементов ядра. Тип D2D1_VECTOR_2F.
Значение по умолчанию — {1.0f, 1.0f}.
Scalemode
D2D1_SPOTSPECULAR_PROP_SCALE_MODE
Режим интерполяции, который используется эффектом для масштабирования изображения до соответствующей длины единицы ядра. Существует шесть режимов масштабирования, которые варьируются по качеству и скорости. Дополнительные сведения см. в разделе Режимы масштабирования .
Тип — D2D1_SPOTSPECULAR_SCALE_MODE.
Значение по умолчанию — D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR.

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

Перечисление Описание
D2D1_SPOTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR Выборка ближайшей единственной точки и ее использование. Этот режим использует меньше времени обработки, но выводит изображение самого низкого качества.
D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR Использует выборку из четырех точек и линейную интерполяцию. В этом режиме выводится изображение более высокого качества, чем у ближайшего соседа.
D2D1_SPOTSPECULAR_SCALE_MODE_CUBIC Использует 16 примеров кубического ядра для интерполяции. Этот режим использует больше всего времени обработки, но выводит изображение более высокого качества.
D2D1_SPOTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR Использует 4 линейные выборки в одном пикселе для правильного сглаживания краев. Этот режим хорошо подходит для уменьшения масштаба на небольшие объемы изображений с несколькими пикселями.
D2D1_SPOTSPECULAR_SCALE_MODE_ANISOTROPIC Использует анизотропную фильтрацию для выборки шаблона в соответствии с преобразованной формой растрового изображения.
D2D1_SPOTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC Использует высокое качество кубического ядра переменного размера для предварительного уменьшения масштаба изображения, если уменьшение масштаба участвует в матрице преобразования. Затем использует режим интерполяции куба для окончательного вывода.

Примечание

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

Требования

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

ID2D1Effect