Signatur
Beschreibung
SVGFEDiffuseLightingElement ist die DOM-Schnittstelle für das Element <feDiffuseLighting> innerhalb eines <filter>. Das Filterprimitiv berechnet eine diffuse Beleuchtung nach dem Lambert-Modell. Der Alphakanal des Eingangsbildes dient dabei als Höhenkarte (Bump-Map). Genau ein untergeordnetes Lichtquellen-Element legt fest, woher das Licht kommt: <feDistantLight>, <fePointLight> oder <feSpotLight>. Heraus kommt ein vollständig undurchsichtiges Lichtbild. Dieses verrechnet man meist per <feComposite operator="arithmetic"> oder <feBlend> mit der Originalgrafik.
So entstehen Relief-, Präge- und Papiertexturen oder plastisch wirkende Buttons, ganz ohne Rastergrafiken. Oft kombiniert man das Primitiv mit <feTurbulence>: Das Rauschen liefert dann die Höhenkarte für eine Oberflächenstruktur.
Die Schnittstelle erbt von SVGElement. Aus SVGFilterPrimitiveStandardAttributes kommen x, y, width, height und result hinzu. Speziell für die Beleuchtung gibt es in1, surfaceScale, diffuseConstant, kernelUnitLengthX und kernelUnitLengthY. Alle Eigenschaften sind animierbare Objekte vom Typ SVGAnimatedNumber, SVGAnimatedString oder SVGAnimatedLength. Über baseVal liest und schreibt man den Grundwert, er entspricht dem Attribut im Markup. animVal liefert nur lesend den aktuell wirksamen Wert, der per SMIL animiert sein kann.
Die Lichtfarbe ist keine Eigenschaft der Schnittstelle. Sie kommt aus der CSS-Eigenschaft bzw. dem Präsentationsattribut lighting-color. Setzen kann man sie per setAttribute('lighting-color', …) oder element.style.lightingColor.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $in1 | SVGAnimatedString | vorheriges Ergebnis bzw. SourceGraphic | Spiegelt das Attribut in wider: die Eingabe, deren Alphakanal als Höhenkarte dient, z. B. SourceAlpha oder ein result-Name. |
| $surfaceScale | SVGAnimatedNumber | 1 | Höhenfaktor der Oberfläche: Mit ihm wird der Alphawert multipliziert. Größere Werte ergeben ein stärkeres Relief. |
| $diffuseConstant | SVGAnimatedNumber | 1 | Diffuse Reflexionskonstante kd im Lambert-Modell, also die Helligkeit des Lichtbildes. Muss ≥ 0 sein. |
| $kernelUnitLengthX | SVGAnimatedNumber | Erster Wert des Attributs kernelUnitLength: Abstand der Stützstellen in X-Richtung bei der Berechnung der Oberflächennormalen. |
|
| $kernelUnitLengthY | SVGAnimatedNumber | Zweiter Wert von kernelUnitLength (Y-Richtung). Fehlt er, gilt der X-Wert. |
|
| $x, y, width, height | SVGAnimatedLength | 0%, 0%, 100%, 100% | Teilbereich des Filterprimitivs, geerbt aus SVGFilterPrimitiveStandardAttributes. |
| $result | SVGAnimatedString | Name des Zwischenergebnisses. Spätere Primitive können es über in/in2 referenzieren. |
Rückgabewert
document.createElementNS('http://www.w3.org/2000/svg', 'feDiffuseLighting') oder querySelector('feDiffuseLighting').