Publicado por Nicolas Capens, Ingeniero de software y Pixel Pirate

SwiftShader es una biblioteca de software pensada para la representación de gráficos de alto rendimiento en la CPU. En Google, ya se usa en varios productos, como Chrome, las herramientas de desarrollo de Android y los servicios en la nube. A partir de hoy, Swiftshader será totalmente de código abierto. Esto ampliará su abanico de aplicaciones potenciales.

Desde 2009, en Chrome se ha usado SwiftShader para habilitar la representación 3D en sistemas que admiten por completo la representación con aceleración mediante hardware. Aunque el contenido 3D como WebGL se escribe para una GPU, algunos dispositivos de los usuarios no cuentan con hardware gráfico capaz de ejecutarlo. En otros dispositivos, pueden existir errores graves en los controladores por los que la representación 3D podría no ser confiable o incluso posible. En Chrome, se aplica SwiftShader en estos sistemas a fin de garantizar la disponibilidad del contenido web 3D para todos los usuarios.
WithWithoutWebGL3.png
Sin SwiftShader en una máquina con una GPU inadecuada (izquierda), Chrome no puede ejecutar el experimento de WebGL Globe. Con SwiftShader habilitado (derecha), en la misma máquina se puede representar por completo el contenido.

SwiftShader implementa la misma API de gráficos OpenGL ES que se usa en Chrome y Android. La conversión de SwiftShader al código abierto permitirá que otros proveedores de navegadores admitan contenido 3D de manera universal y supondrá un avance para la toda la plataforma web. En particular, la compatibilidad incondicional con WebGL permite a los desarrolladores web crear contenido más atractivo; por ejemplo, juegos informales, aplicaciones educativas, software de creación de contenido colaborativo, exhibiciones de productos y recorridos visuales, entre otras opciones. SwiftShader también se usa en la nube y hace posible la representación en sistemas sin GPU.


A fin de brindar a los usuarios el mejor rendimiento, en SwiftShader se usan varias técnicas para realizar cálculos de manera eficaz en la CPU. En contraposición a la más frecuente optimización en tiempo de compilación, la generación de código dinámico permite adaptar el código a las tareas en cuestión en tiempo de ejecución. Este enfoque complejo se simplifica usando Reactor, un lenguaje C++ personalizado e integrado de sintaxis imperativa e intuitiva. En SwiftShader también se aplican operaciones vectoriales de tipo SIMT, combinadas con tecnología de múltiples subprocesos, para un mayor paralelismo entre los núcleos y las unidades vectoriales disponibles de la CPU. Esto permite la representación en tiempo real para usos como la representación de aplicaciones en Android.


Los desarrolladores pueden acceder al código fuente de SwiftShader desde su repositorio de git. Regístrate en la lista de distribución para mantenerte actualizado respecto de los desarrollos más recientes y colaborar con otros desarrolladores de SwiftShader de la comunidad de código abierto.