SVG ÂoÃ褸¥ó¤§¤G

ÂoÃè¦Cªí

SVG ¤¤¥i¥ÎªºÂoÃ褸¥ó¦³¡G

·Ó©úÂoÃè(Lighting Filters)

­n¨Ï¥Î SVG ³Ð«Ø¿O¥ú®ÄªG¡A±z»Ý­n«ü©w¤@¨Ç¤º®e: ·Ó©úÂoÃè±N±Ä¥Î¥H¤Uµ²ºc:
<type of lighting in="" lighting-color="">
   <light source />
 </type of lighting>

<fePointLight>

<feSpotLight>

<feDistantLight>

<feSpecularLighting>

<feSpecularLighting> SVG ÂoÃè°ò¤¸«ü©w±q¤Ï®g­±¤Ï®gªº¤G¦¸¥ú¡C
 <filter id = "filter">
    <feSpecularLighting result="specOut"
        specularExponent="20" lighting-color="#bbbbbb">
      <fePointLight x="50" y="75" z="200"/>
    </feSpecularLighting>
    <feComposite in="SourceGraphic" in2="specOut"
        operator="arithmetic" k1="0" k2="1" k3="1" k4="0"/>
  </filter>
  <circle cx="110" cy="110" r="100" style="filter:url(#filter)"/>

<feDiffuseLighting>

<feDiffuseLighting> SVG ÂoÃè°ò¤¸¨Ó¦Û¥~³¡¥ú·½¡A¾A¦X¼ÒÀÀ¤Ó¶§¥ú©ÎªÌ¿O¥ú·Ó©ú¡C

¨ÒÃD:¦¹¨ÒÅã¥Ü¤F <feDiffuseLighting> ¤¸¥ó¹ï¨C­Ó¥i¥Î¥ú·½ªº¶êªº®ÄªG¡C ¨C¦¸¡A¥ú½u³£¨Ó¦Û¥ª¤W¨¤¡C

°Ñ¦Ò¸ê®Æ:

<feMorphology>

ÂoÃè<feMorphology>¹ï¹Ï¹³¤¤²£¥Íªºµ²ªG®ÄªG¬O¼WªÎ(dilate)©Î½G¨­(erode)¡C ³o¬O¤@­Ó¬Û·í²³æªº®ÄªG¡A¥u¦³¨â­Ó°Ñ¼Æ±±¨î®ÄªGªºÃþ«¬©M¤j¤p¡C
  <defs>
    <filter id="Erode1">
      <feMorphology operator="erode" in="SourceGraphic" radius="1" />
    </filter>
    <filter id="Dilate1">
      <feMorphology operator="dilate" in="SourceGraphic" radius="1" />
    </filter>
  </defs>
    <g font-family="Verdana" font-size="30" stroke="blue" stroke-width="1">
      <text x="50" y="40">Unfiltered</text>
      <text x="50" y="80" filter="url(#Erode1)">Erode</text>
      <text x="50" y="120" filter="url(#Dilate1)">Dilate</text>
    </g>

feMorphology °Êµe ¥ª¹Ï¬O¤U¦C¸}¥»ªº¹ê²{¡A¹Ï¹³ÅÜ­D©Î©ú«G(dilate)¡C¥k¹Ï¬OÅܽG©Î·t(erode)¡C

<svg width="450" height="300" viewBox="0 0 450 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
    <filter id="morphology">
        <feMorphology operator="dilate" radius="0">
            <animate attributeName="radius" from="0" to="5" dur="5s" repeatCount="indefinite" />
        </feMorphology>
    </filter>
    <image xlink:href="../svg/tree.jpg" width="90%" height="90%" x="10" y="10" filter="url(#morphology)"></image>
</svg>

­ì¹Ï¦b³o¸Ì¡C

Åã¥Ü°Êµe feMorphology ®ÄªGªº¥Ü¨Ò:³æÀ»¥i§ïÅÜ

°Ñ¦Ò¸ê®Æ:

<feTurbulence>

<feTurbulence> ¨Ï¥Î Perlin ´ø¬y(turbulence)¨ç¼Æ³Ð«Ø¯¾²z¡C ¥¦³Ð«Ø¤F¥­·ÆªºµøÄ±Âø°T¼Ò¦¡¡A¥Î¬X©M¦â±mºx´õ¶ñ¥R¯x§Î¡C
·Q¹³¬O¤@ºØÂø°T¡A¦ý¤£¬O²É¤lª¬ªºÂø°T¡A¬ORGBA³£Âø°Tªº¹Ï¹³¡C³q±`·|®M¥Î¦b feDisplacementMap ¤@°_¥Î¡A«Ø¥ß½K§é¡BÂø°T¡Bªá¬Á¼þµ¥®ÄªG¡C

¥D­nÄݩʦ³¤­ºØ¡AbaseFrequency (·Q¹³Âø°T¹ÏÀɤj¤p 0.01~1)¡BnumOctaves (·Q¹³ºë ½o«× 1~10)¡Bseed (Âø°T¹ÏÀɺؤl½X)¡BstitchTiles (Âø°T¹ÏÀɬO§_«÷±µ)¡Btype (Ãþ«¬¡AfractalNoise¸û¡¨Ãú­±¡¨,turbulence¸ûÁû²É)

<rect x="0" y="0" height="100%" width="100%" fill="#fff"/>
<filter id="twoF">
  <feTurbulence baseFrequency=".01" numOctaves="4" seed="200"/>
</filter>
<rect x="25%" y="25%" filter="url(#twoF)" height="50%" width="50%"/>
³q¹L§ïÅÜ°Ñ¼Æ baseFrequency¡BnumOctaves¡]¹w³]¬° 1.0¡^¡Btype¡]¹w³]¬° 'turbulence'¡^¡BstitchTiles¡]¹w³]¬° 'noStitch'¡^©M seed¡]¹w³]¬° '0'¡^ªº­È¡A ¥i¥H²£¥Í ¦hºØ¦³½ìªº¼Ò¦¡Ãþ«¬¡A¦p¤U¹Ï©Ò¥Ü:
A.
baseFrequency = ".04"
B.
baseFrequency= ".04" numOctaves="2"
C.
baseFrequency = ".04"
numOctaves="2" seed="201"
D.
baseFrequency= ".04"
numOctaves="5"
seed="201"
E.
baseFrequency = ".04"
F.
baseFrequency
= ".01"
G.
baseFrequency
= ".1" numOctaves="1"
H.
baseFrequency
= ".1" numOctaves="3"
I.
baseFrequency= ".04"
type = "fractalNoise"
J.
baseFrequency= ".01"
type = "fractalNoise"
numOctaves = "3" ¡@
K.
baseFrequency
= ".04,.1"
L.
baseFrequency
= ".1,.01"

<feComposite>

<feComposite> ¥Î©ó±N¨â­Ó¹Ï¹³¬Û¥æ¡C ¥¦»Ý»Ý­n¨â­Ó¿é¤J¡A¡§in¡¨©M¡§in2¡¨¡C in ¹w³]¬O SourceGraphic¡C
¹Bºâ²Åªº¡§in¡¨ÄݩʥΩóÅã¥Ü²Õ¦Xªºµ²ªG¡C
<filter id="composite" y="0" x="0" width="100%" height="100%">
  <feTurbulence baseFrequency=".05" numOctaves="3" result="B"/>
  <feComposite in2="B" in="SourceGraphic" operator="in" />
</filter>
<ellipse cx="100" cy="87" rx="75" ry="87" fill="red"
      filter="url(#composite)"/>

operator ÄݩʥΩó³]¸m¦p¦ó¦X¨Ö³o¨â­Ó¿é¤J·½:

¥H¤U¥Ü¨Ò±Nºñ¦â¤è¶ô(¿é¤J 1)©M¬õ¦â¤è¶ô(¿é¤J 2)¡A¨Ì¤£¦P¤è¦¡¦X¨Ö:

¯S®í¦rÅé

SourceGraphic ©M SourceAlpha ¨âÃöÁäµü¡A³£¬Oªí¥Ü¹Ï§Î¤¸¥ó¦Û¨­±N§@¬° <filter> °ò¤¸ªº­ì©l¿é¤J¡C SourceAlpha »P SourceGraphic ¨ã¦³¬Û¦Pªº³W«h¡A°£¤F SourceAlpha ¥u¨Ï¥Î¤¸¥óªº«D³z©ú³¡¤À¡C
<defs>
  <filter id="filter">
     <feMorphology in="SourceAlpha"
        operator="dilate" radius="2" result="OUTLINE" />
     <feComposite operator="out" in="OUTLINE"
                           in2="SourceAlpha" />
  </filter>
</defs>
<text class="filtered" x="20" y="85"
  style="filter: url(#filter);fill:black;
   font-family:'Ultra',serif;font-size:80px;">Outlined
</text>

¤ôºw

À³¥Î feTurbulence ©M feDiffuseLighting ³y¦¨¤ôºwºw¦b¯È¤Wªº®ÄªG¡C

·½½X¦b³o­ÓCodePen¡C

°Ñ¦Ò¸ê®Æ:

<feTurbulence>ÄÝ©Ê

feTurbulenceÂoÃè¤ä«ù¤U­±5­Ó±M¦³ªºhtmlÄݩʡG

<feTurbulence>À³¥Î--³Ð³y¯¾²z

feTurbulence ¥i¥H¥Î¨Ó³Ð³y«Ü¦h¯¾¸ô¡A ¨Ã·|§Q¥Î¥ú½u¨Ó¹F¨ì¥W¥Y§÷½èªº®i²{¡A¬Û·í¦³·N«ä¡C

¦³¯¾¸ôªº¯È

<defs>
  <filter id="a122401_f1" filterUnits="userSpaceOnUse">
    <feTurbulence type="fractalNoise" baseFrequency="0.03 0.06"
         numOctaves="10" result="a122401_t1" seed="1">
    </feTurbulence>
    <feSpecularLighting in="a122401_t1" lighting-color="#eed"
         specularExponent="2" surfaceScale="4" result="a122401_L1">
      <feDistantLight azimuth="45" elevation="30">
    </feSpecularLighting>
    <feComposite operator="atop" in="a122401_L1" in2="SourceGraphic">
    </feComposite>
  </filter>
</defs>
<rect x="0" y="0" width="100%" height="100%" fill="#aaa"
    style="filter: url(#a122401_f1)"></rect>

¤ìÀY¯¾²z

<svg xmlns="http://www.w3.org/2000/svg"
            xmlns:xlink="http://www.w3.org/1999/xlink"
      width="300" height="300" style="background-color:#fff">
<defs>
  <filter id="a122408_f1" x="0" y="0" width="100%" height="100%">
    <feFlood flood-color="#722" result="a122408_fd1">
    <feFlood flood-color="#ea0" result="a122408_fd2">
    <feTurbulence type="fractalNoise" baseFrequency="0.005 0.06"
          numOctaves="1" seed="1">
    </feTurbulence>
    <feComponentTransfer color-interpolation-filters="sRGB"
             result="a122408_ft1">
        <feFuncR type="discrete" tableValues="0 0">
        <feFuncG type="discrete" tableValues="0 0">
        <feFuncB type="discrete" tableValues="0 0">
        <feFuncA type="table"
          tableValues="0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
                         0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
                         0 1 0 1 0 1 0 1 0 1 0 1">
        </feFuncA>
    </feComponentTransfer>
    <feComposite in="a122408_fd1" in2="a122408_ft1" operator="in"
          result="a122408_fcin"></feComposite>
    <feComposite in="a122408_fd2" in2="a122408_ft1" operator="out"
          result="a122408_fcout"></feComposite>
    <feComposite in="a122408_fcin" in2="a122408_fcout"
          operator="arithmetic" k1="0" k2="1" k3="1" k4="0"></feComposite>
</filter>
</defs>
<rect x="0" y="0" width="300" height="300" style="filter: url(#a122408_f1)">
</svg>

°Ñ¦Ò¸ê®Æ:

<feDisplacementMap>

¹ï¿é¤J¨Ó·½1¨C­Ó¹³¯À¦ì¸mÀ³¥Î¿é¤J¨Ó·½2ªºÃC¦â²¾¸m¡A¨Ó·½1ªº¹Ï¤ù·|¦]¬°¨Ó·½2ªºÃC¦â²£¥Í°¾²¾¡C ¦Ü©ó­þ­ÓÃC¦â¡B««ª½ÁÙ¬O¥ª¥k°¾¡A«h¥ÎChannelSelector©w¸q¡C

¦P¼Ë¦³¤­­ÓÄݩʡAin (­n³Q¼vÅT¹Ï¹³1)¡Bin2 (­nµo´§¼vÅTªº¹Ï¹³2)¡Bscale(´T«×)¡BxChannelSelector (X®y¼Ð­n¥ÎRGBA¤°»òÃC¦â)¡ByChannelSelector (Y®y¼Ð­n¥ÎRGBA¤°»òÃC¦â)¡C

<svg width="200" height="200" viewBox="0 0 220 220"
     xmlns="http://www.w3.org/2000/svg">
  <filter id="displacementFilter">
    <feTurbulence type="turbulence" baseFrequency="0.05"
        numOctaves="2" result="turbulence"/>
    <feDisplacementMap in2="turbulence" in="SourceGraphic"
        scale="50" xChannelSelector="R" yChannelSelector="G"/>
  </filter>

  <circle cx="100" cy="100" r="100"
      style="filter: url(#displacementFilter)"/>
</svg>

À³¥Î¨ÒÃD: ¤õµK®ÄªG

<defs>
  <filter id="a122407_f1" filterUnits="userSpaceOnUse">
    <feTurbulence type="fractalNoise" baseFrequency="0.02 0.02"
            numOctaves="10" result="a122407_t1" seed="7">
    </feTurbulence>
    <feDisplacementMap in2="a122407_t1" in="SourceGraphic"
            scale="140" xChannelSelector="R" yChannelSelector="G">
    </feDisplacementMap>
  </filter>
  <radialGradient id="a122407_rad1">
    <stop offset="0%" stop-color="#ff0f">
    <stop offset="100%" stop-color="#f000">
  </radialGradient>
</defs>
  <rect x="0" y="30" width="90%" height="100%"
      fill="url(#a122407_rad1)" style="filter: url(#a122407_f1)">
  <ellipse cx="150" cy="200" rx="120" ry="200"
      fill="url(#a122407_rad1)" style="filter: url(#a122407_f1)">
  <ellipse cx="150" cy="240" rx="120" ry="200"
      fill="url(#a122407_rad1)" style="filter: url(#a122407_f1)">
  <ellipse cx="150" cy="260" rx="120" ry="200"
      fill="url(#a122407_rad1)" style="filter: url(#a122407_f1)">

°Ñ¦Ò¸ê®Æ ¦³½ìªº SVG filter - ³Ð³y¯¾²z

¨ÒÃD: ¤ôªi­Ë¼v

¹M¾ú­ì¹Ï§Îªº©Ò¦³¹³¯ÀÂI¡A¨Ï¥ÎfeDisplacementMap­«·s¬M®g´À´«¤@­Ó·sªº¦ì¸m¡A§Î¦¨¤@­Ó·sªº¹Ï§Î¡C ¦]¦¹¡AfeDisplacementMapÂoÃè¦b·~¬Éªº¥D¬yÀ³¥Î¬O¹ï¹Ï§Î¶i¦æ§ÎÅÜ¡A§á¦±¡A²G¤Æ¡C
¥k¹Ï´N¬O¨â­Ó <img>¤¸¥ó¡A¨ä¤¤¤U¹Ï¼Ð¬O¤W¹Ï¼Ðªº««ª½Â½Âà¡C
<img src="./moon-night.jpg">
<img src="./moon-night.jpg" class="reflect">
.reflect {
    transform: scaleY(-1);
    filter: url(#displacementFilter);
}
³o¸Ì¦P®ÉÀ³¥Î¤F2­ÓÂoÃè¡A¤@­Ó¬OfeTurbulenceÂoÃè¡A¼ÒÀÀ´ø¬y¡C ¨ä¤¤baseFrequencyªºÄݩʭȪº¤ô¥­©M««ª½ªº¾¸ÂIÀW²v¤ñ¬O1:10¡A¦]¦¹¡A·|¦³Ãþ¦ü¤ô¥­©Ô¦ùªº®ÄªG¡C

¥t¤@­Ó feDisplacementMap ÂoÃè«h®Ú¾Ú R¡]¬õ¦â¡^³q¹D¶i¦æ¤ô¥­¤è¦Vªº¦ì¸m°¾²¾¡A®Ú¾Ú B¡]ÂŦâ¡^³q¹D¶i¦æ««ª½¤è¦V¦ì¸m°¾²¾¡A ¥Ñ©ó±m¦â´ø¬y¤ô¥­©Ô¦ù¤F¡A¦]¦¹¡A³Ì²×ªºÂoÃè®ÄªG´N¬O¤@­Ó¤ô¥­¤è¦V©Ô¦ù¬°¥Dªº²G¤Æ®ÄªG¡AµøÄ±¤W´N¹³¬O¦ÛµM¬É¤ôªi¿ººyªº®ÄªG¡C

<svg width="0" height="0" style="posiotion:absolute;left:-999px;">
  <filter id="displacementFilter">
    <feTurbulence type="turbulence" baseFrequency="0.01 .1"
        numOctaves="1" result="turbulence" seed="53" />
    <feDisplacementMap in2="turbulence" in="SourceGraphic"
        scale="20" xChannelSelector="R" yChannelSelector="B" />
  </filter>
</svg>

À³¥Î¨ÒÃD: ¤ôªi¿ººy

¼ÒÀÀ¤ôªi­Ë¼vªº°ò¥»§@ªk©M«e¨Ò¤@¼Ë¡C¦¹¨Ò¨Ï¥Î SMIL °Êµe¤¸¥ó animate¡A½Õ¾ãÂoÃè feTurbulence ªº baseFrequency¡A ¥Ñ 0.02 0.1 ¨ì 0.022 0.13 ¦A¦^¨ì 0.02 0.1¡A¬°®É 15¬í¡C¦p¦¹¤£Â_´`Àô¡A§Y¥i³y¦¨¤ôªi¿ººy®ÄªG¡C§ó¦h°Êµe¥Ü¨Ò¡A¨£ SMIL¡C
<svg width="300" height="400" xmlns="http://www.w3.org/2000/svg">
<defs>
  <filter id="a122305_f1" filterUnits="userSpaceOnUse">
    <feTurbulence type="turbulence" baseFrequency="0.02 0.1"
         numOctaves="2" result="a122305_tt">
      <animate attributeName="baseFrequency"
          values="0.02 0.1;0.022 0.13;0.02 0.1" dur="15s"
          repeatCount="indefinite">
      </animate>
    </feTurbulence>
    <feDisplacementMap in2="a122305_tt" in="SourceGraphic" scale="40"
        xChannelSelector="R" yChannelSelector="G">
    </feDisplacementMap>
  </filter>
</defs>
  <image href="../svg/bird.jpg" x="-20" y="0" width="320" height="200"
     preserveAspectRatio="none"
     style="transform:translate(0,430px) scale(1,-1) ;    // ¤ÏÂà
     filter: url(#a122305_f1)"></image>  // ­Ë¼v¹Ï
  <image href="../svg/bird.jpg" x="-20" y="0" width="320" height="240"
  preserveAspectRatio="none"></image>  // ­ì¹Ï
</svg>

¤S¤@¤ôªi¿ººy

°Ñ¦Ò»¡»¡SVGªº feTurbulence ÂoÃè

À³¥Î¨ÒÃD: ¤ôªiº§º¬


Click Me!

°Ñ¦Ò¸ê®Æ

Ãö©ó»s³y¤ôªi®ÄªGªº»¡©ú¡A½Ð°Ñ¦Ò

<feBlend>

<feBlend> ¥Î©ó³q¹L¦UºØÂ²³æªº¤èªk¡]§Y¼Ò¦¡Äݩʪº­È¡^±N¨â­Ó¹Ï¹³²V¦X¦b¤@°_¡C
²V¦Xªº¼Ò¦¡(mode)¦³ normal(¥¿±`)¡Bscreen(«Ì¹õ)¡Bmultiply(­¿¼W)¡Blighten(ÅÜ«G)©M darken(ÅÜ·t)¡C
 <defs>
   <filter id="blend" x="0" y="0">
     <feImage xlink:href="../svg/qing-vase.jpg" width="50%" height="50%" result="rectangle" />
     <feImage xlink:href="../svg/strawberry-fields.jpg" width="50%" height="50%" result="strawberry" />
     <feBlend mode="darken" in="rectangle" in2="strawberry" />
   </filter>
 </defs>

 <g filter="url(#blend)">
<image x="5%" y="10%" href="strawberry-fields.jpg" height="100%" width="100%"/>
 </g>
¥t¤@¥Ü¨Ò
<rect x="0" y="0" height="100%" width="100%" fill="white"/>

<filter id="screen">
    <feBlend mode="screen" in2="BackgroundImage" in="SourceGraphic"/>
</filter>
<filter id="darken">
    <feBlend mode="normal" in2="BackgroundImage" in="SourceGraphic"/>
</filter>
<filter id="multiply">
    <feBlend mode="multiply" in2="BackgroundImage" in="SourceGraphic"/>
</filter>
<filter id="lighten">
    <feBlend mode="lighten" in2="BackgroundImage" in="SourceGraphic"/>
</filter>
<filter id="sample">
  < feBlend mode="darken" in2="BackgroundImage" in="SourceGraphic">
    <animate attributeName="mode"  dur="5s"
      values="screen;multiply;lighten;darken;"
      repeatCount="indefinite"/>
</feBlend>

<g enable-background="new">
<rect x="0" y="10%" height="4%" width="100%" fill="red"/>
<rect x="0" y="14%" height="4%" width="100%" fill="green"/>
<rect x="0" y="18%" height="4%" width="100%" fill="blue"/>
<image x="5%" y="5%" xlink:href="../svg/p2.jpg" filter="url(#darken)" height="46%" width="26%"/>
<image x="20%" y="5%" xlink:href="../svg/p2.jpg" filter="url(#screen)" height="46%" width="26%"/>
<image x="35%" y="5%" xlink:href="../svg/p2.jpg" filter="url(#multiply)" height="46%" width="26%"/>
<image x="50%" y="5%" xlink:href="../svg/p2.jpg" filter="url(#lighten)" height="46%" width="26%"/>
<image x="65%" y="5%" xlink:href="../svg/p2.jpg" filter="url(#sample)" height="46%" width="26%"/>
</g>
¥Ü¨Ò¤G

±N¨â¹Ï²V¦X¡A²V¦X¼Ò¦¡¥Ñ¥ª¦Ó¥k¡Gnormal, multiply, screen, darden, lighten

<filter id="lighten" x="0" y="0" width="200" height="250">
    <feImage width="200" height="250" xlink:href="girl.jpg" result="img1" />
    <feImage width="200" height="250" xlink:href="sky.jpg" result="img2" />
    <feBlend mode="lighten" in="img1" in2="img2"/>
</filter>

­ì¹Ï¦ì§}

°Ñ¦Ò¸ê®Æ¦³·N«ä¡I±j¤jªº SVG ÂoÃè

Blend modes for <feBlend>

¶³¯}¤ë¨Óªá§Ë¼v--SVG¦hºØ§Þ³N²Õ¦X¹ê²{

¤ë¨Ó

¥Îsvg°µ­Ó¤ë«GÁÙ¬O«Ü²³æªº¡A¥u­nµe¤@­Óµo¥úªº¤j¶ê»æ´N¦n¤F¡C

<circle id="whitemoon" cx="420" cy="160" r="60" fill="white" />

¥Î feGaussianBlur ¼Ò½k«áªº§@¬°¤ë«Gªº¥ú¡C

<filter id="blur-moon">  // µo¥úªº¤ë«G
    <feGaussianBlur in="SourceGraphic" stdDeviation="3" />
</filter>

¦AÀ³¥Î feTurbulence ©M feDisplacementMap»s³y¤ë«G¤Wªº³±¼v:

<circle id="greymoon" cx="420" cy="170" r="30"
    fill="grey" fill-opacity="0.25"
    filter="url(#filter-greymoon)" />
<filter id="blur-greymoon" width="350%" height="250%" x="-100%" y="-100%">
     <feGaussianBlur in="SourceGraphic" stdDeviation="1" />
</filter>
<filter id="filter-greymoon" width="350%" height="250%" x="-100%" y="-100%">
    <feTurbulence type="fractalNoise"
        baseFrequency="0.03" numOctaves="9" seed="3" />
    <feDisplacementMap in="SourceGraphic" scale="120" />
</filter>

²Õ¦X°_¨Ó¡A´N¦¨¬°¦³³±¼v¡BÃä½tµo¥úªº¤ë«G¡C

<g id="moon">
<use xlink:href="#whitemoon" /> // ¤ë«G
<use xlink:href="#whitemoon" filter="url(#blur-moon)" /> // µo¥úªº¤ë«G
<use xlink:href="#greymoon" filter="url(#greymoon)" />  // ¦³³±¼vªº¤ë«G
</g>
<use xlink:href="#moon" />

¶³¯}

¶³ªº»s§@¤À¤T¬q:«e¡B¤¤¡B«á¡C¨C¬q¤j¦P¤p²§¡A¥u¬O¦ì¸m¡B¤j¤p©MÃC¦â¤£¦P¡C
¥H¤U¥H«á¬q¬°¨Ò¡A¥DÊ^¬O¾ò¶ê¡AÀ³¥Î feGaussianBlur ÁU½k¤Æ¡A¦AÀ³¥Î feTurbulence ©M feDisplacementMap Âø¶Ã¤Æ¡Cª`·N¡AfeTurbulence ªº type ¥Îªº¬O fractalNoise¡C

<ellipse id="cloudback" cx="260" cy="130" rx="180" ry="50"
    fill="white" fill-opacity="0.95" filter="url(#blur-cloud)" />
<filter id="blur-cloud" width="350%" height="250%" x="-100%" y="-100%">
  <feGaussianBlur in="SourceGraphic" stdDeviation="15" />
</filter>
<filter id="filter-back" width="350%" height="280%" x="-100%" y="-100%">
    <feTurbulence type="fractalNoise" baseFrequency="0.012"
        numOctaves="4" seed="0" />
    <feDisplacementMap in="SourceGraphic" scale="140" />
</filter>
<use xlink:href="#cloudback" filter="url(#filter-back)" />

¶³ªº»s§@°Ñ¦Ò¤ÑÃä¤@¦·¶³

ªá§Ë¼v

feoffset¡G¸Ó¿é¤J¹Ï¹³§@¬°¤@­Ó¾ãÅé¡A¦bÄÝ©Ê dx ©MÄÝ©Ê dy ªº­È«ü©w¤F°¾²¾¶q¡C»¡¥Õ¤F´N¬O§â­ì¹Ï¦bÂ÷¶}dx©Mdyªº¶ZÂ÷¥~½Æ»s¤@­Ó¤@¼Ëªº¹Ï¹³¡C
feBlend¡G§â¨â­Ó¹ï¶H²Õ¦X¦b¤@°_¡A¨Ï¥¦­Ì¨ü¯S©wªº²V¦X¼Ò¦¡±±¨î¡C¿ï¾Ü darken ¼Ò¦¡»s³yªá¼v
<filter id="huazhishadow" x="0" y="0" width="300%" height="200%">
    <feOffset result="offOut" in="SourceAlpha" dx="220" dy="0" />
    <feGaussianBlur result="blurOut" in="offOut" stdDeviation="1" />
    <feBlend in="SourceGraphic" in2="blurOut" mode="darken" />
</filter>
<image xlink:href="../svg/huazhi.png" x="200" y="10" width="100"></image>
<image xlink:href="../svg/huazhi.png" x="-90" y="10" width="130"
   filter="url(#huazhishadow)" transform="skewX(29)"></image>

¶³¯}¤ë¨Óªá§Ë¼v

³Ì«á§â¤ë«G¡A¶³¡B°|Àð©Mªá¼v²Õ¦X°_¨Ó¡A¨Ã½Õ¾ã©¼¦¹¦ì¸m¡A¦¨¬°³Ì²×ªº¼v¹³¡C

<image xlink:href="yuanqiang.png" x="0" y="50" width="400"/>  // °|Àð
<use xlink:href="#moon" />  // ¤ë«G
<use xlink:href="#cloud" />  // ¶³
<image xlink:href="huazhi.png" x="200" y="400" width="100"> // ªá
<image xlink:href="huazhi.png" x="-490" y="400" width="130" // ªá¼v
   filter="url(#huazhishadow)" transform="skewX(29)"/>

³v¨B¸Ô²Ó¸Ñ»¡¡A¨£¶³¯}¤ë¨Óªá§Ë¼v

==>svg-filters

°Ñ¦Ò¸ê®Æ

  1. SVG Filter Play
  2. Filter Effects in SVG
  3. svg filter
  4. SVG §¹¾ã±Ð¾Ç 31 ¤Ñ
  5. ¤@¦¸·dÀ´SVG¤¤©Ò¦³±`¥ÎªºÂoÃè
  6. why-the-svg-filter-is-awesome
  7. The 10 Best SVG Filter Resources & Tutorials
  8. ±j¤jªº SVG ÂoÃè
  9. svg-filter-shadow-css-blur
  10. fediffuselighting
  11. SVG feTurbulenceÂoÃè²`¤J¤¶²Ð
  12. SVG fedisplacementmapÂoÃè²`¤J¤¶²Ð
  13. outline-text-with femorphology