暗黑模式
漫反射光照滤镜
前端教程SVG
<feDiffuseLighting> 漫反射光照滤镜使用 <fePointLight> 点光源、<feDistantLight> 平行光、<feSpotLight> 聚光灯来产生一个漫反射光照贴图(light map)。内部原理是冯氏光照模型中的漫反射光,更多参考:知乎 - 冯氏光照模型。
基本语法
xml
<filter id="pointLight">
<feDiffuseLighting in="SourceGraphic" result="light" lighting-color="white" surfaceScale="1" diffuseConstant="1">
<fePointLight x="150" y="60" z="20" />
</feDiffuseLighting>
</filter>
<filter id="distantLight">
<feDiffuseLighting in="SourceGraphic" result="light" lighting-color="white">
<feDistantLight azimuth="240" elevation="20"/>
</feDiffuseLighting>
</filter>
<filter id="spotLight">
<feDiffuseLighting in="SourceGraphic" result="light" lighting-color="white">
<feSpotLight x="360" y="5" z="30" limitingConeAngle="20" pointsAtX="390" pointsAtY="80" pointsAtZ="0"/>
</feDiffuseLighting>
</filter>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
light-color:光的颜色surfaceScale:输入图形表面的高度,默认 1;diffuseConstant:冯氏光照模型漫反射公式中的 kd 值,默认 1,非负值;<fePointLight>点光源- x,y 光的位置
- z 光的高度
<feDistantLight>平行光azimuth:光源在 XY 平面的方向角度值(顺时针,相对于 X 轴),默认 0,范围 0~360;elevation:光源从XY平面到 Z 轴的方向角度,默认 0,范围 0~360。
<feSpotLight>聚光灯- x,y,z 光源的位置和高度
- pointsAtX, pointsAtY, pointsAtZ:光源所指向的点的坐标位置
- specularExponent:控制光源的焦点。值越大,光越亮,默认 1。
- limitingConeAngle:圆锥体的角度,决定聚光灯的光照范围,默认 0。
<fePointLight> 示例
- 红点表示光的位置,
<feDistantLight> 示例
- 调整 azimuth 的值,改变光的方向
- 调整 elevation 的值,改变光的高度
<feSpotLight> 示例
- 红点表示光的位置
- 蓝点表示光照向的位置,红线就是光照的方向了






