聚光灯漫反射光效果

使用点漫射照明效果创建一个图像,该图像似乎是一个非反射表面,其中光源仅限于定向锥体光,并且光线散射到所有方向。 此效果使用 alpha 通道作为高度地图,并使用聚光光源照亮图像。

输出位图的颜色是浅色、光线位置和图面几何图形的结果。 具有漫射照明的每个像素的 alpha 通道输出始终为 1.0。

此效果的 CLSID CLSID_D2D1SpotDiffuse。

示例图

此处的示例显示了点漫射照明效果的输入和输出图像。

显示的效果示例屏幕截图

该效果计算使用以下公式计算的最终输出像素值:

输出位图计算

其中:

kd = 漫射照明常量。 由用户指定。
法向量符号。 = surface 法线单位矢量,x 和 y 的函数。
光矢量符号。 = 从图面指向光的单位矢量。
Lr、Lg、Lb = 以 RGB 分量表示的浅色。

效果属性

显示名称和索引枚举 类型和默认值 说明
LightPosition
D2D1_SPOTDIFFUSE_PROP_LIGHT_POSITION
D2D1_VECTOR_3F
{0.0f, 0.0f, 0.0f}
点光源的光位置。 属性是定义为 (x、y、z) 的D2D1_VECTOR_3F。 这些单位以与设备无关的像素为单位, (DIP) 且是无限的。
PointsAt
D2D1_SPOTDIFFUSE_PROP_POINTS_AT
D2D1_VECTOR_3F
{0.0f, 0.0f, 0.0f}
聚光灯聚焦的位置。 属性公开为 (x、y、z) 的D2D1_VECTOR_3F。 单位以 DIP 为单位,值是无限的。
焦点
D2D1_SPOTDIFFUSE_PROP_FOCUS
FLOAT
1.0f
聚光灯的焦点。 此属性是无单位的,定义在 0 到 200 之间。
LimitingConeAngle
D2D1_SPOTDIFFUSE_PROP_LIMITING_CONE_ANGLE
FLOAT
90.0f
限制投射光的区域的圆锥角。 圆锥体外没有投射光。 限制圆锥角是聚光轴 (LightPositionPointsAt 属性) 与聚光锥之间的轴之间的角度。 此属性以度数定义,必须介于 0 到 90 度之间。
DiffuseConstant
D2D1_SPOTDIFFUSE_PROP_DIFFUSE_CONSTANT
FLOAT
1.0f
漫射反射与入射光量的比率。 此属性必须介于 0 和 10,000 之间,并且是无单位的。
SurfaceScale
D2D1_SPOTDIFFUSE_PROP_SURFACE_SCALE
FLOAT
1.0f
Z 方向的比例因子。 表面刻度是无单位的,必须介于 0 到 10,000 之间。
Color
D2D1_SPOTDIFFUSE_PROP_COLOR
D2D1_VECTOR_3F
{1.0f, 1.0f, 1.0f}
入射光的颜色。 此属性公开为向量 3 (R、G、B) ,用于计算 LR、LG、LB
KernelUnitLength
D2D1_SPOTDIFFUSE_PROP_KERNEL_UNIT_LENGTH
D2D1_VECTOR_2F
{1.0f, 1.0f}
Sobel 内核中用于在 X 和 Y 方向生成图面法线的元素的大小。 此属性映射到 Sobel 渐变中的 dx 和 dy 值。 此属性是D2D1_VECTOR_2F (内核单元长度 X、内核单元长度 Y) ,在 (DIP/内核单元) 中定义。 该效果使用双线性内插来缩放位图以匹配内核元素的大小。
ScaleMode
D2D1_SPOTDIFFUSE_PROP_SCALE_MODE
D2D1_SPOTDIFFUSE_SCALE_MODE
D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR
效果用于将图像缩放到相应的内核单元长度的内插模式。 有六种缩放模式在质量和速度方面有范围。 有关详细信息 ,请参阅缩放模式

缩放模式

枚举 描述
D2D1_SPOTDIFFUSE_SCALE_MODE_NEAREST_NEIGHBOR 对最近的单一点采样并使用该点。 此模式使用的处理时间较少,但输出质量最低的图像。
D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR 使用四点样本和线性内插。 此模式输出比最近的邻居更高的图像质量。
D2D1_SPOTDIFFUSE_SCALE_MODE_CUBIC 使用 16 个示例立方内核进行内插。 此模式使用的处理时间最多,但会输出更高质量的图像。
D2D1_SPOTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR 在单个像素内使用 4 个线性样本,以便进行良好的边缘抗锯齿。 此模式适用于在像素较少的图像上按少量纵向缩减。
D2D1_SPOTDIFFUSE_SCALE_MODE_ANISOTROPIC 使用各向异性筛选根据位图的转换形状对图案进行采样。
D2D1_SPOTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC 如果转换矩阵中涉及降级,则使用可变大小的高质量立方内核对图像执行预缩减。 然后将三次内插模式用于最终输出。

注意

如果未选择模式,则效果默认为D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR。

要求

要求
最低受支持的客户端 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用]
最低受支持的服务器 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用]
标头 d2d1effects.h
d2d1.lib、dxguid.lib

ID2D1Effect