Todos los paquetes de código abierto
InterfazSwift

SwiftShaders

Efectos de shader de Metal para vistas SwiftUI: color, blur, distorsión, ripples y transiciones.

7EstrellasÚltima versión: v2.0.0Actualizado: 14 de octubre de 2026
Plataformas:iOS 17macOS 14

Licencia: MIT

Un paquete Swift sin dependencias para iOS 17+ y macOS 14+. Cada efecto es un view modifier, un fill o una transition sobre los propios colorEffect, distortionEffect y layerEffect de SwiftUI, así que funciona en cualquier vista. Cada argumento público se comprueba antes de llegar a la GPU, y los efectos se verifican con tests que renderizan vistas y comparan píxeles.

Características

  • 26 view modifiers, 3 fills y 5 transitions respaldados por 31 funciones Metal [[ stitchable ]]
  • Comprobaciones de argumentos: los rangos se limitan (clamp), NaN apaga un efecto, los sample offset se limitan a la diagonal de la vista y los gradient maps usan como máximo 256 colores
  • Bordes limpios: los efectos que comparan píxeles vecinos solo leen dentro de la vista, y los efectos de color conservan el alfa antialiased del texto
  • ShaderTime (.animated, .animated(speed:), .fixed(_:)) para efectos animados, que se detienen en su primer frame cuando Reduce Motion está activo
  • Ripples que siguen el toque sin interferir con los propios gestos de la vista
  • ShaderLibrary.swiftShaders para llamar directamente a las funciones del shader, y SwiftShaders.isMetalLibraryAvailable para comprobar que la herramienta de build las compiló
  • 77 tests de Swift Testing que se ejecutan en macOS y en un simulador de iPhone; un test de la librería compara los nombres de las funciones compiladas con los nombres que llama el código Swift
  • Catálogo DocC con tres artículos y la app de ejemplo ShaderGallery para iOS y macOS

Inicio rápido

swift
1import SwiftShaders
2import SwiftUI
3 
4struct ContentView: View {
5 var body: some View {
6 Image(systemName: "mountain.2.fill")
7 .font(.system(size: 96))
8 .foregroundStyle(.blue)
9 .padding(40)
10 .background(.blue.opacity(0.15), in: .rect(cornerRadius: 24))
11 .halftone(dotSize: 6, ink: .blue, paper: .white)
12 }
13}

Instalación

Xcode (File › Add Package Dependencies…)

text
1https://github.com/muhittincamdali/SwiftShaders.git

Swift Package Manager

swift
1.package(url: "https://github.com/muhittincamdali/SwiftShaders.git", from: "2.0.0")

Capturas de pantalla

Tres copias de un paisaje dibujado por código: a la izquierda las filas se balancean con una onda, en el centro un ripple se expande desde el centro, a la derecha una banda de luz recorre la imagen
El paisaje con cada efecto de color: original, sepia, duotone, gradient map, posterize, threshold, dither, vignette, scanlines, film grain y shimmer
El paisaje con cada efecto de capa: pixelate, halftone, sketch, emboss, sharpen, progressive blur, chromatic aberration, kaleidoscope y glitch
El paisaje con cada distorsión: wave, water, swirl, bulge y loupe
Fotogramas de las transiciones dissolve, pixelate, swirl, circle reveal y radial wipe al 0, 25, 50 y 75 por ciento
La pantalla Halftone de la app de ejemplo, con un slider de tamaño de punto, en un simulador de iPhone

Cronología

  1. Repositorio abierto con tres efectos; v1.0.0 etiquetada en el primer commit y ampliada la misma semana

  2. Se eliminaron los fuentes de shaders; el paquete quedó reducido a código placeholder

  3. Empezó la reconstrucción: se eliminaron los fuentes placeholder, las plantillas y los tests antiguos

  4. v2.0.0: reescrito desde cero sobre los modificadores de shader de SwiftUI, con 31 funciones Metal, tests de píxeles, DocC y una app de ejemplo

Enlaces

Artículo relacionado

Leer el artículo