远镜面反射效果

使用远反射照明效果创建一个图像,该图像看起来是反射表面,其中光源似乎来自远距离 (,如太阳或头顶灯) 。 此效果使用 alpha 通道作为高度贴图,并使用远处的光源照亮图像。

输出位图的颜色是浅色、光位置和表面几何图形的结果。 具有反射照明的每个像素的 alpha 通道输出是该像素的最大红色、绿色和蓝色通道输出。

此效果的 CLSID 是CLSID_D2D1DistantSpecular。

示例图

此处的示例显示了远光照明效果的输入和输出图像。

效果示例屏幕截图,显示远光照明效果的输入和输出图像。

可以使用以下公式计算最终输出位图。

输出位图计算

其中

K? = 反射照明常量。
表面法线符号。= 表面法线单位矢量。
中途向量符号。= 眼单位向量和光单位向量之间的“中途”单位矢量。
Cr、Cg、Cb = RGB 分量中的光色。

远距光源

此处的图像显示了来自远距离光源的光方向的示例。

远距光源

该效果使用方位角和高程参数来计算光向量 l 向量。 使用以下公式:

光向量计算

其中 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。
SpecularExponent
D2D1_DISTANTSPECULAR_PROP_SPECULAR_EXPONENT
Phong 照明公式中反射项的指数。 较大的值对应于反射性更高的表面。 该值是无单位的,必须介于 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。
Color
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) ,在 /Kernel Unit) ) (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 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用]
最低受支持的服务器 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用]
标头 d2d1effects.h
d2d1.lib、dxguid.lib

ID2D1Effect