Skip to content
Technical

Efectos de filtros SVG: creación de efectos visuales avanzados

Domina los filtros SVG para desenfoque, sombras, efectos de color y tratamientos visuales complejos. Guía completa de primitivas de filtro y combinaciones creativas.

Robin Monteiro28 de enero de 202610 de octubre de 20266 min
Use this article with an AI assistant:
.md
Efectos de filtros SVG: creación de efectos visuales avanzados
R
Robin Monteiro

Founder of VectoSolve

Self-taught developer, founder and sole developer of VectoSolve since 2024. He builds the conversion engine and the cutting, embroidery and 3D printing exports.

How this article was made: drafted with AI assistance, then edited and fact-checked before publication. About the author

Image vectorizationCutting machine filesEmbroidery filesSVG
Free previewNo signupFull-quality output

Key Takeaways

  • Los filtros SVG aplican efectos visuales acelerados por GPU como desenfoque, sombra y distorsión directamente en el navegador
  • Las primitivas de filtro (feGaussianBlur, feColorMatrix, feTurbulence, etc.) se pueden encadenar para crear efectos complejos
  • Recetas creativas como vidrio esmerilado, brillo neón y relieve se construyen combinando primitivas de filtro simples
  • El rendimiento varía ampliamente — feColorMatrix es ligero mientras que feTurbulence es computacionalmente pesado
  • Usa filtros CSS como alternativa para efectos simples y reserva los filtros SVG para composiciones avanzadas

El poder de los filtros SVG

Los filtros SVG permiten efectos visuales sofisticados sin imágenes rasterizadas. Desde sombras simples hasta distorsiones complejas, los filtros transforman los gráficos vectoriales de maneras poderosas.

Vista general de efectos de filtros SVG mostrando desenfoque, sombra y transformaciones de color
Los filtros SVG convierten formas simples en impresionantes composiciones visuales

Fundamentos de filtros

Estructura del filtro

xml
<defs>
  <filter id="myFilter">
    <!-- Primitivas de filtro aquí -->
  </filter>
</defs>

<rect filter="url(#myFilter)" .../>

Región del filtro

Controla los límites del filtro:

xml
<filter id="f" x="-20%" y="-20%" width="140%" height="140%">
  <!-- Extiende el área del filtro más allá del elemento -->
</filter>

Pro Tip: Siempre extiende la región del filtro (ej: x="-20%") al usar efectos de desenfoque o sombra. Si la salida de tu filtro se ve recortada, la región del filtro es demasiado pequeña.


Efectos de filtro comunes

Desenfoque (feGaussianBlur)

xml
<filter id="blur">
  <feGaussianBlur stdDeviation="5"/>
</filter>

Desenfoque variable:

xml
<!-- Solo desenfoque horizontal -->
<feGaussianBlur stdDeviation="10 0"/>

<!-- Solo desenfoque vertical -->
<feGaussianBlur stdDeviation="0 10"/>

Sombra paralela (feDropShadow)

Sombra simple:

xml
<filter id="shadow">
  <feDropShadow dx="3" dy="3" stdDeviation="2" flood-opacity="0.5"/>
</filter>

Sombra personalizada

Más control:

xml
<filter id="custom-shadow">
  <feGaussianBlur in="SourceAlpha" stdDeviation="3" result="blur"/>
  <feOffset in="blur" dx="4" dy="4" result="offset"/>
  <feFlood flood-color="#000" flood-opacity="0.5" result="color"/>
  <feComposite in="color" in2="offset" operator="in" result="shadow"/>
  <feMerge>
    <feMergeNode in="shadow"/>
    <feMergeNode in="SourceGraphic"/>
  </feMerge>
</filter>

A Full Year of Conversions for $49

Starter Annual: 25 conversions every month, $49 for the whole year. That is about $4.08 a month · Cancel anytime

Get the Annual Deal

Efectos de color

Matriz de color (feColorMatrix)

Conversión a escala de grises:

xml
<filter id="grayscale">
  <feColorMatrix type="saturate" values="0"/>
</filter>

Tono sepia:

xml
<filter id="sepia">
  <feColorMatrix type="matrix"
    values="0.393 0.769 0.189 0 0
            0.349 0.686 0.168 0 0
            0.272 0.534 0.131 0 0
            0     0     0     1 0"/>
</filter>

Rotación de matiz:

xml
<filter id="hue-rotate">
  <feColorMatrix type="hueRotate" values="90"/>
</filter>

Ajuste de color

Brillo/contraste:

xml
<filter id="bright">
  <feComponentTransfer>
    <feFuncR type="linear" slope="1.5" intercept="0"/>
    <feFuncG type="linear" slope="1.5" intercept="0"/>
    <feFuncB type="linear" slope="1.5" intercept="0"/>
  </feComponentTransfer>
</filter>
"

Los filtros SVG son el Photoshop del navegador — capéalos con cuidado y podrás crear efectos que de otro modo requerirían un software de edición de imágenes pesado.

— Sara Soueidan, experta en SVG

Desplazamiento y distorsión

Turbulencia

Creación de ruido:

xml
<filter id="turbulence">
  <feTurbulence type="turbulence"
                baseFrequency="0.05"
                numOctaves="2"/>
</filter>

Mapa de desplazamiento

Distorsión con patrón:

xml
<filter id="displace">
  <feTurbulence type="turbulence"
                baseFrequency="0.02"
                numOctaves="3"
                result="noise"/>
  <feDisplacementMap in="SourceGraphic"
                      in2="noise"
                      scale="30"
                      xChannelSelector="R"
                      yChannelSelector="G"/>
</filter>

Efectos de iluminación

Iluminación difusa

Iluminación tipo 3D:

xml
<filter id="diffuse">
  <feDiffuseLighting lighting-color="#white" surfaceScale="5">
    <fePointLight x="100" y="100" z="200"/>
  </feDiffuseLighting>
</filter>

Iluminación especular

Reflejos brillantes:

xml
<filter id="specular">
  <feSpecularLighting specularConstant="1"
                       specularExponent="30"
                       lighting-color="white"
                       surfaceScale="5">
    <fePointLight x="150" y="60" z="200"/>
  </feSpecularLighting>
</filter>

Free SVG Tools for Crafters

Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG

Check Your SVG Free

Combinar filtros

Operaciones de fusión

Superposición de resultados:

xml
<filter id="glow">
  <feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur"/>
  <feMerge>
    <feMergeNode in="blur"/>
    <feMergeNode in="blur"/>
    <feMergeNode in="SourceGraphic"/>
  </feMerge>
</filter>

Operaciones de composición

Combinar con operadores:

xml
<filter id="cutout">
  <feImage href="mask.svg" result="mask"/>
  <feComposite in="SourceGraphic"
               in2="mask"
               operator="in"/>
</filter>

Recetas creativas

Vidrio esmerilado

xml
<filter id="frosted">
  <feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur"/>
  <feColorMatrix in="blur" type="saturate" values="1.5" result="saturate"/>
  <feTurbulence type="fractalNoise" baseFrequency="0.1" result="noise"/>
  <feDisplacementMap in="saturate" in2="noise" scale="5"/>
</filter>

Brillo neón

xml
<filter id="neon">
  <feFlood flood-color="#ff00ff" result="flood"/>
  <feComposite in="flood" in2="SourceGraphic" operator="in" result="mask"/>
  <feGaussianBlur in="mask" stdDeviation="5" result="blur"/>
  <feMerge>
    <feMergeNode in="blur"/>
    <feMergeNode in="blur"/>
    <feMergeNode in="SourceGraphic"/>
  </feMerge>
</filter>

Efecto de relieve

xml
<filter id="emboss">
  <feConvolveMatrix
    order="3"
    kernelMatrix="-2 -1 0
                  -1  1 1
                   0  1 2"/>
</filter>
Efectos SVG animados incluyendo brillo, turbulencia y transiciones dinámicas
Animar filtros SVG añade profundidad e interactividad a los gráficos web

Animación con filtros

Desenfoque animado

xml
<filter id="animated-blur">
  <feGaussianBlur stdDeviation="0">
    <animate attributeName="stdDeviation"
             values="0;10;0"
             dur="2s"
             repeatCount="indefinite"/>
  </feGaussianBlur>
</filter>

Turbulencia dinámica

xml
<feTurbulence baseFrequency="0.02">
  <animate attributeName="baseFrequency"
           values="0.01;0.05;0.01"
           dur="5s"
           repeatCount="indefinite"/>
</feTurbulence>

A Full Year of Conversions for $49

Starter Annual: 25 conversions every month, $49 for the whole year. That is about $4.08 a month · Cancel anytime

Get the Annual Deal

Consideraciones de rendimiento

Impacto en el rendimiento

Rendimiento de filtros:
feGaussianBlur: Pesado (depende del radio)
feColorMatrix: Ligero
feTurbulence: Muy pesado
feDisplacementMap: Pesado
Filtros encadenados: Acumulativo

Consejos de optimización

  1. Minimizar la región del filtro
  2. Reducir el radio de desenfoque
  3. Limitar los efectos encadenados
  4. Cachear filtros estáticos
  5. Usar filtros CSS cuando sea posible

Para efectos simples como desenfoque, escala de grises o sombra paralela, el filter de CSS es significativamente más rápido que los filtros SVG porque aprovecha el compositing acelerado por hardware. Reserva los filtros SVG para efectos que CSS no puede replicar.

Alternativa con filtros CSS

Cuando sea posible, usa CSS:

css
.blurred {
  filter: blur(5px);
}

.grayscale {
  filter: grayscale(100%);
}

Compatibilidad con navegadores

Estado del soporte

Soporte amplio:
- feGaussianBlur
- feColorMatrix
- feOffset
- feMerge

Soporte variable:
- feDisplacementMap
- feTurbulence
- feDiffuseLighting

Estrategias de respaldo

css
.element {
  /* Respaldo */
  box-shadow: 0 2px 10px rgba(0,0,0,0.3);
}

@supports (filter: url(#shadow)) {
  .element {
    box-shadow: none;
    filter: url(#shadow);
  }
}

Conclusión

Los filtros SVG permiten efectos sofisticados imposibles solo con CSS. Aunque son computacionalmente intensivos, ofrecen un control preciso sobre los tratamientos visuales. Úsalos con criterio para efectos impactantes, siempre considerando el rendimiento y proporcionando alternativas de respaldo.

Crear efectos vectoriales filtrados


Primitiva de filtroEfectoCoste de rendimiento
feGaussianBlurDesenfoque suave / vidrio esmeriladoMedio (acelerado por GPU)
feColorMatrixCambio de color, desaturaciónBajo
feTurbulenceRuido, texturas orgánicasAlto (cálculo a nivel de píxel)
feDisplacementMapDistorsión, efectos de ondulaciónAlto
feDropShadowSombras paralelasBajo–Medio

Free SVG Tools for Crafters

Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG

Check Your SVG Free

Fuentes y lecturas adicionales

Tags:
Filtros SVG
Efectos visuales
Desenfoque
Sombra
Avanzado
Share:

Try VectoSolve Now

Convert your images to high-quality SVG vectors with AI

AI-Powered Vectorization

Ready to vectorize your images?

Convert your PNG, JPG, and other images to high-quality, scalable SVG vectors in seconds.