<feDiffuseLighting>
Примитив фильтра <feDiffuseLighting> SVG освещает изображение, используя альфа-канал как карту выступов. Результирующее изображение, которое является непрозрачным изображением RGBA, зависит от цвета света, положения источника света и геометрии поверхности входной карты выступов.
Карта света, созданная этим примитивом фильтра, может быть объединена с текстурным изображением с использованием оператора умножения arithmetic оператора фильтра <feComposite>. Несколько источников света можно смоделировать, добавив несколько таких карт света вместе перед применением к текстурному изображению.
Контекст использования
| Категории | Примитив фильтра |
|---|---|
| Разрешенное содержимое | Любое количество описательных элементов и ровно один элемент источника света в любом порядке. |
Атрибуты
Интерфейс DOM
Этот элемент реализует интерфейс SVGFEDiffuseLightingElement.
Пример
Следующий пример демонстрирует эффект элемента <feDiffuseLighting> на окружности с каждым доступным источником света. Каждый раз свет исходит из верхнего левого угла.
<svg width="440" height="140" xmlns="http://www.w3.org/2000/svg"> <!-- No light is applied --> <text text-anchor="middle" x="60" y="22">No Light</text> <circle cx="60" cy="80" r="50" fill="green" /> <!-- the light source is a fePointLight element --> <text text-anchor="middle" x="170" y="22">fePointLight</text> <filter id="lightMe1"> <feDiffuseLighting in="SourceGraphic" result="light" lighting-color="white"> <fePointLight x="150" y="60" z="20" /> </feDiffuseLighting> <feComposite in="SourceGraphic" in2="light" operator="arithmetic" k1="1" k2="0" k3="0" k4="0" /> </filter> <circle cx="170" cy="80" r="50" fill="green" filter="url(#lightMe1)" /> <!-- the light source is a feDistantLight element --> <text text-anchor="middle" x="280" y="22">feDistantLight</text> <filter id="lightMe2"> <feDiffuseLighting in="SourceGraphic" result="light" lighting-color="white"> <feDistantLight azimuth="240" elevation="20" /> </feDiffuseLighting> <feComposite in="SourceGraphic" in2="light" operator="arithmetic" k1="1" k2="0" k3="0" k4="0" /> </filter> <circle cx="280" cy="80" r="50" fill="green" filter="url(#lightMe2)" /> <!-- the light source is a feSpotLight source --> <text text-anchor="middle" x="390" y="22">feSpotLight</text> <filter id="lightMe3"> <feDiffuseLighting in="SourceGraphic" result="light" lighting-color="white"> <feSpotLight x="360" y="5" z="30" limitingConeAngle="20" pointsAtX="390" pointsAtY="80" pointsAtZ="0" /> </feDiffuseLighting> <feComposite in="SourceGraphic" in2="light" operator="arithmetic" k1="1" k2="0" k3="0" k4="0" /> </filter> <circle cx="390" cy="80" r="50" fill="green" filter="url(#lightMe3)" /> </svg>
Ожидаемое отображение:
Живое отображение:
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
feDiffuseLighting |
5 | 12 | 3 | 15 | 6 | 18 | 4 | 14 | 6 | 1.0 | 4.4 |
diffuseConstant |
5 | 79 | 3 | 15 | 6 | 18 | 4 | 14 | 6 | 1.0 | 4.4 |
in |
5 | 12 | 3 | 15 | 6 | 18 | 4 | 14 | 6 | 1.0 | 4.4 |
kernelUnitLength |
5 | 79 | 3 | 15 | 6 | 18 | 4 | 14 | 6 | 1.0 | 4.4 |
surfaceScale |
5 | 79 | 3 | 15 | 6 | 18 | 4 | 14 | 6 | 1.0 | 4.4 |
См. также
- Атрибуты примитивов фильтров SVG
<filter><feBlend><feColorMatrix><feComponentTransfer><feComposite><feConvolveMatrix><feDisplacementMap><feDistantLight><feFlood><feGaussianBlur><feImage><feMerge><feMorphology><feOffset><fePointLight><feSpecularLighting><feSpotLight><feTile><feTurbulence>- Руководство по SVG: Эффекты фильтров
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDiffuseLighting