聚光灯镜面反射效果
使用点反射照明效果创建一个图像,该图像似乎是一个反射表面,其中光源仅限于定向锥光。 此效果使用 alpha 通道作为高度地图,并使用点光源照亮图像。
根据 Phong 照明模型的反射部分,输出位图的颜色是光颜色、光线位置、圆锥方向和表面几何图形的结果。 具有反射照明的每个像素的 alpha 通道输出是该像素的最大红色、绿色和蓝色通道输出。
此效果的 CLSID CLSID_D2D1SpotSpecular。
示例图
此处的示例显示了专色反射照明效果的输入和输出图像。
反射光是指在特定方向反射的光。
该效果计算使用此处的公式计算的最终输出像素值:
其中
聚光灯源
聚光光源在特定方向的圆锥中发射光,不会在圆锥体外发光。
聚光光源计算光向量 L 和半向量 H 的方式与 点反射 效果相同。
该效果计算光颜色 Lr、Lg、Lb 作为光源位置的函数,如下所示:
矢量 由以下公式定义:
矢量 由以下公式定义:
效果属性
显示名称和索引枚举 | 说明 |
---|---|
LightPosition D2D1_SPOTSPECULAR_PROP_LIGHT_POSITION |
点光源的光位置。 属性是定义为 (x、y、z) 的D2D1_VECTOR_3F。 这些单位以与设备无关的像素为单位, (DIP) 且是无限的。 类型为D2D1_VECTOR_3F。 默认值为 {0.0f, 0.0f, 0.0f}。 |
PointsAt D2D1_SPOTSPECULAR_PROP_POINTS_AT |
聚光灯聚焦的位置。 属性公开为 (x、y、z) 的D2D1_VECTOR_3F。 单位以 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。 |
SpecularExponent D2D1_SPOTSPECULAR_PROP_SPECULAR_EXPONENT |
Phong 照明等式中反射项的指数。 较大的值对应于反射性更高的表面。 此值是无单位的,必须介于 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。 |
Color 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 方向生成图面法线的元素的大小。 此属性映射到 Sobel 渐变中的 dx 和 dy 值。 此属性是D2D1_VECTOR_2F (内核单元长度 X、内核单元长度 Y) ,在 (DIP/内核单元) 中定义。 该效果使用双线性内插来缩放位图以匹配内核元素的大小。 类型为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 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用] |
最低受支持的服务器 | 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用] |
标头 | d2d1effects.h |
库 | d2d1.lib、dxguid.lib |