Эффект освещения с точечным спектром
Используйте эффект отражения светового пятна, чтобы создать изображение, которое выглядит как отражающая поверхность, где источник света ограничен направленным световым конусом. Этот эффект использует альфа-канал в качестве карты высоты и освещает изображение с помощью точечного источника света.
Цвет выходного растрового изображения является результатом светлого цвета, положения света, направления конуса и геометрии поверхности в соответствии с зрительной частью модели освещения Phong. Выходные данные альфа-канала для каждого пикселя с зеркальным освещением — максимальное количество выходных данных красного, зеленого и синего каналов для этого пикселя.
CLSID для этого эффекта CLSID_D2D1SpotSpecular.
- пример изображения
- источник света
- свойства эффекта
- Режимы масштабирования
- требования
- Связанные темы
Пример изображения
В примере показаны входные и выходные изображения эффекта точечного спекулярного освещения.
пример эффекта
Спектрулярный свет относится к свету, отраженному в определенном направлении.
Эффект вычисляет конечные значения пикселей выходных данных, используя приведенные здесь формулы:
где
Источник точечных света
Источник света прожектора излучает свет в форме конуса в определенном направлении и не излучает свет за пределами этого конуса.
Точечный источник света вычисляет световой вектор L и полусуммарный вектор H таким же образом, как и точечно-зеркальный эффект .
Эффект вычисляет светлый цвет, Lr, Lg, Lb, как функцию положения источника света, как показано в уравнениях:
уравнение
Вектор определяется этими уравнениями:
уравнение
Вектор определяется следующими уравнениями:
уравнение
Свойства эффекта
Отображаемое имя и перечисление индексов | Описание |
---|---|
Позиция света 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 |