Эффект точечного зеркального освещения
Используйте точечный зеркальный эффект освещения, чтобы создать изображение, которое выглядит как отражающая поверхность. Эффект использует альфа-канал изображения в качестве карты высот и точечного источника света, который вы размещаете, и вычисляет отражение и свет в соответствии с зеркальной частью модели освещения Phong.
Цвет выходного растрового изображения является результатом светлого цвета, положения света и геометрии поверхности. Выходные данные альфа-канала для каждого пикселя с зеркальным освещением — максимальное количество выходных данных красного, зеленого и синего каналов для этого пикселя.
CLSID для этого эффекта равен CLSID_D2D1PointSpecular.
- пример изображения
- Точечный источник света
- карта высот и нормальный вектор
- Константа и показатель степени зеркального освещения
- свойства эффекта
- режимы масштабирования
- Требования
- Связанные темы
Пример изображения
В этом примере показаны входные и выходные изображения точечно-зеркального эффекта освещения.
Спектрулярный свет относится к свету, который отражается в определенном направлении в соответствии с моделью освещения Phong.
Эффект вычисляет конечные выходные значения пикселей с помощью уравнений:
где
- чё? = константа зеркального освещения.


Lr, Lg, Lb = светлый цвет в компонентах RGB.
Вы задаете постоянную величину зеркального освещения как свойство SpecularConstant и цвет освещения как свойство Color.
Источник освещения точки
Точечный источник света излучает свет во всех направлениях, как показано на изображении.
Вы задаете положение источника света с помощью свойства LightPosition. Эффект вычисляет вектор света, L, для точечного источника света, используя приведенные здесь уравнения.
где Свет, Светy, и Светz — это положение входного света. Эффект вычисляет вектор среднего направления, символ вектора среднего направления как определено в модели освещения Phong, с использованием указанного здесь уравнения. Модель освещения предполагает, что вектор глаз,
, расположен в (0,0,1).
И L, и H нормализуются для векторов длины единицы.
Карта высоты и обычный вектор
Эффект создает карту высоты для входного изображения на основе своего альфа-канала.
Компонент высоты (Z) вычисляется с помощью уравнения:
Эффект вычисляет нормаль поверхности, для входного растрового изображения с помощью градиента Собеля.
Константы и показатели степени зеркального освещения
Спекулярный свет представляет собой свет, который отражается от поверхности карты высоты изображения. Вы указываете свойство Specular Exponent, определяющее объем зеркального отражения из растрового изображения.
Более крупные экспоненты представляют блестящие объекты и отражают свет в более ориентированной форме.
Свойство SpecularConstant K? определяет объем отраженного света как соотношение входящего света.
Свойства эффекта
Отображаемое имя и перечисление индексов | Описание |
---|---|
LightPosition D2D1_POINTSPECULAR_PROP_LIGHT_POSITION |
Положение точечного источника света. Свойство — это D2D1_VECTOR_3F, представленный в виде (x, y, z). Единицы измерения выражаются в пикселях, независимых от устройства (DIPs), а значения — без единиц измерения и без ограничений. Тип D2D1_VECTOR_3F. Значение по умолчанию — {0.0f, 0.0f, 0.0f}. |
Экспонента блеска D2D1_POINTSPECULAR_PROP_SPECULAR_EXPONENT |
Экспонента для зеркального термина в уравнении освещения Фонга. Большее значение соответствует более отражающей поверхности. Это значение является безразмерным и должно находиться в диапазоне от 1,0 до 128. Тип FLOAT. Значение по умолчанию — 1.0f. |
SpecularConstant D2D1_POINTSPECULAR_PROP_SPECULAR_CONSTANT |
Соотношение зеркального отражения к падающему свету. Это значение является безразмерным и должно составлять от 0 до 10 000. Тип FLOAT. Значение по умолчанию — 1.0f. |
SurfaceScale D2D1_POINTSPECULAR_PROP_SURFACE_SCALE |
Коэффициент масштабирования в направлении Z для создания карты высоты. Значение безразмерное и должно составлять от 0 до 10 000. Тип FLOAT. Значение по умолчанию — 1.0f. |
Цвет D2D1_POINTSPECULAR_PROP_COLOR |
Цвет входящего света. Это свойство предоставляется как D2D1_VECTOR_3F (R, G, B) и используется для вычисления LR, LG, LB. Тип D2D1_VECTOR_3F. Значение по умолчанию — {1.0f, 1.0f, 1.0f}. |
ДлинаЕдиницыЯдра D2D1_POINTSPECULAR_PROP_KERNEL_UNIT_LENGTH |
Размер элемента в ядре Sobel, используемый для создания нормальной поверхности в направлениях X и Y. Это свойство сопоставляется со значениями dx и dy в градиенте Sobel. Это свойство является D2D1_VECTOR_2F(длина единицы ядра X, длина единицы ядра Y) и определено в (DIPs/Kernel Unit). Эффект использует двулинейную интерполяцию для масштабирования растрового изображения для сопоставления размера элементов ядра. Тип D2D1_VECTOR_2F. Значение по умолчанию — {1.0f, 1.0f}. |
Режим масштаба D2D1_POINTSPECULAR_PROP_SCALE_MODE |
Режим интерполяции, используемый эффектом для масштабирования изображения до соответствующей длины единицы ядра. Существует шесть режимов масштабирования, которые отличаются качеством и скоростью. См. режимы масштабирования для получения дополнительной информации. Тип — D2D1_POINTSPECULAR_SCALE_MODE. Значение по умолчанию — D2D1_POINTSPECULAR_SCALE_MODE_LINEAR. |
Режимы масштабирования
Перечисление | Описание |
---|---|
D2D1_POINTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR | Выбирает ближайшую единственную точку и использует ее. В этом режиме используется меньше времени обработки, но выводится изображение с наименьшим качеством. |
D2D1_POINTSPECULAR_SCALE_MODE_LINEAR | Использует четырехточечный образец и линейную интерполяцию. Этот режим выводит изображение более высокого качества, чем ближайший сосед. |
D2D1_POINTSPECULAR_SCALE_MODE_CUBIC | Использует 16 примеров кубового ядра для интерполяции. В этом режиме используется максимальное время обработки, но выводится более качественный образ. |
D2D1_POINTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR | Использует 4 линейных выборки в пределах одного пикселя для хорошего сглаживания краев. Этот режим подходит для уменьшения размера изображений с малым количеством пикселей. |
D2D1_POINTSPECULAR_SCALE_MODE_ANISOTROPIC | Использует анисотропную фильтрацию для выборки шаблона в соответствии с преобразованной формой растрового изображения. |
D2D1_POINTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC | Использует кубическое ядро высокого качества переменной величины для первоначального уменьшения масштаба изображения, если уменьшение масштаба задействовано в матрице преобразования. Затем используется режим интерполяции кубов для конечных выходных данных. |
Заметка
Если вы не выберете режим, эффект устанавливается по умолчанию на D2D1_POINTSPECULAR_SCALE_MODE_LINEAR.
Требования
Требование | Ценность |
---|---|
Минимальный поддерживаемый клиент | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальный поддерживаемый сервер | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |