聚光灯漫反射光效果

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

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

此效果的 CLSID CLSID_D2D1SpotDiffuse。

示例图

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

effect example screenshot that shows

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

output bitmap calculation

其中:

kd = 漫射照明常量。 由用户指定。
normal vector symbol. = 表面法线单位向量,x 和 y 函数。
light vector symbol. = 从表面指向光的单位向量。
LrLgLb = RGB 组件中的浅色。

效果属性

显示名称和索引枚举 类型和默认值 说明
LightPosition
D2D1_SPOTDIFFUSE_PROP_LIGHT_POSITION
D2D1_VECTOR_3F
{0.0f、0.0f、0.0f}
点光源的光位置。 该属性是定义为 (x、y、z) 的D2D1_VECTOR_3F。 单元以与设备无关的像素 () 且未绑定。
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) ,用于计算 LRLGLB
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/Kernel Unit) 中定义。 该效果使用双线性内插来缩放位图以匹配内核元素的大小。
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 Microsoft Store应用]
最低受支持的服务器 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用|Windows Microsoft Store应用]
标头 d2d1effects.h
d2d1.lib、dxguid.lib

ID2D1Effect