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


Эффект освещения с точечным спектром

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

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

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

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

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

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

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

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

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

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

где

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

Источник точечных света

Источник света прожектора излучает свет в форме конуса в определенном направлении и не излучает свет за пределами этого конуса.

Точечный источник света вычисляет световой вектор L и полусуммарный вектор H таким же образом, как и точечно-зеркальный эффект .

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

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

Вектор символ вектора света. определяется этими уравнениями:

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

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

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

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

Отображаемое имя и перечисление индексов Описание
Позиция света
D2D1_SPOTSPECULAR_PROP_LIGHT_POSITION
Положение точечного источника света. Свойство — это D2D1_VECTOR_3F, заданный как (x, y, z). Единицы находятся в независимых от устройства пикселях (DIPs) и не связаны. Тип 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.
Ограничение угла конического сечения
D2D1_SPOT_SPECULAR_PROP_УГОЛ_КОНУСА_ОГРАНИЧЕНИЯ
Угол конуса, ограничивающий область, в которой проецируется свет. Свет не проецируется за пределами конуса. Ограничивающий угол конуса — это угол между осью прожектора (ось между свойствами LightPosition и PointsAt) и конусом прожектора. Это свойство определяется в градусах и должно быть от 0 до 90 градусов. Тип FLOAT.
Значение по умолчанию — 90,0f.
Спекулярная экспонента
D2D1_SPOTSPECULAR_PROP_SPECULAR_EXPONENT
Экспонента для зеркального компонента в уравнении освещения Фонга. Большее значение соответствует более отражающей поверхности. Это значение является безразмерным и должно находиться в диапазоне от 1,0 до 128. Тип FLOAT.
Значение по умолчанию — 1.0f.
Спекулярная константа
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}.
Режим масштабирования
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_СПЕКУЛЯРНОЕ_ПЯТНО_РЕЖИМ_МАСШТАБИРОВАНИЯ_КУБИЧЕСКИЙ Использует 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