
El renderizado por software es el proceso de generar una imagen a partir de un modelo mediante software informático. En el contexto del renderizado de gráficos por computadora , el renderizado por software se refiere a un proceso de renderizado que no depende de circuitos integrados de aplicación específica (ASIC ) de hardware gráfico , como una tarjeta gráfica . El renderizado se realiza completamente en la CPU . Renderizar todo con la CPU (de propósito general) tiene la principal ventaja de que elimina la necesidad de una tarjeta gráfica para el renderizado, pero la desventaja es que una CPU no está diseñada específicamente para el renderizado de gráficos como una tarjeta gráfica, lo que conlleva tiempos de renderizado más lentos. [ 1 ]
El renderizado se utiliza en arquitectura, simuladores, videojuegos, películas y efectos visuales de televisión, así como en la visualización del diseño. El renderizado es el último paso en un proceso de animación y proporciona la apariencia final a los modelos y la animación con efectos visuales como sombreado, mapeo de texturas, sombras, reflejos y desenfoque de movimiento. [ 2 ] El renderizado se puede dividir en dos categorías principales: renderizado en tiempo real (también conocido como renderizado en línea) y pre-renderizado (también llamado renderizado fuera de línea). El renderizado en tiempo real se utiliza para renderizar interactivamente una escena, como en los videojuegos 3D , y generalmente cada fotograma debe renderizarse en unos pocos milisegundos. El renderizado fuera de línea se utiliza para crear imágenes y películas realistas, donde cada fotograma puede tardar horas o días en completarse, o para la depuración de código gráfico complejo por parte de los programadores.
Renderizado de software en tiempo real
Para la renderización en tiempo real, la prioridad es el rendimiento. Los primeros renderizadores de software en tiempo real con mapeo de texturas para PC utilizaban muchos trucos para crear la ilusión de geometría 3D ( el verdadero 3D se limitaba a polígonos planos o con sombreado Gouraud, empleados principalmente en simuladores de vuelo ). Ultima Underworld , por ejemplo, permitía una forma limitada de mirar hacia arriba y hacia abajo, suelos inclinados y habitaciones superpuestas, pero recurría a sprites para todos los objetos detallados. La tecnología utilizada en estos juegos se clasifica actualmente como 2.5D .
Uno de los primeros juegos con una arquitectura similar a la de los títulos 3D modernos, que permitía 6 grados de libertad completos , fue Descent , que presentaba modelos 3D hechos completamente de polígonos triangulares con texturas de mapa de bits. Los gráficos basados en vóxeles también ganaron popularidad para la renderización rápida y relativamente detallada del terreno, como en Delta Force , pero el hardware popular de función fija acabó imposibilitando su uso. Quake cuenta con un eficiente renderizador de software creado por Michael Abrash y John Carmack . Gracias a su popularidad, Quake y otros juegos 3D poligonales de la época impulsaron las ventas de tarjetas gráficas , y más juegos comenzaron a utilizar API de hardware como DirectX y OpenGL . Aunque la renderización por software dejó de ser la tecnología de renderización principal, muchos juegos hasta bien entrados los años 2000 todavía contaban con un renderizador de software como alternativa; Unreal y Unreal Tournament , por ejemplo, incluían renderizadores de software capaces de producir una calidad y un rendimiento aceptables en las CPU de la época. Uno de los últimos juegos AAA sin renderizador de hardware fue Outcast , que presentaba tecnología de vóxeles avanzada, pero también filtrado de texturas y mapeo de relieve, como los que se encuentran en el hardware gráfico.
En el mercado de las consolas de videojuegos y los juegos arcade , la evolución del 3D fue más abrupta, ya que siempre habían dependido en gran medida de chipsets de propósito único. Las consolas de 16 bits incorporaron cartuchos aceleradores RISC en juegos como StarFox y Virtua Racing , que implementaban la renderización por software mediante conjuntos de instrucciones personalizados. La Jaguar y la 3DO fueron las primeras consolas en incluir hardware 3D, pero no fue hasta la PlayStation que estas características comenzaron a utilizarse en la mayoría de los juegos.
Los juegos para niños y jugadores ocasionales (que utilizan sistemas obsoletos o diseñados principalmente para aplicaciones de oficina) de finales de los 90 y principios de los 2000 solían usar un renderizador de software como alternativa. Por ejemplo, Toy Story 2: Buzz Lightyear al rescate permite elegir entre renderizado por hardware o por software antes de jugar, mientras que otros, como Half-Life, usan por defecto el modo de software y se pueden configurar para usar OpenGL o DirectX en el menú Opciones. Algunos programas de modelado 3D también incluyen renderizadores de software para la visualización. Finalmente, la emulación y verificación del hardware también requiere un renderizador de software. Un ejemplo de esto último es el rasterizador de referencia Direct3D .
Pero incluso para gráficos de alta gama, el "arte" del renderizado por software no ha desaparecido por completo. Si bien las primeras tarjetas gráficas eran mucho más rápidas que los renderizadores por software y originalmente tenían mejor calidad y más funciones, limitaban al desarrollador al procesamiento de píxeles de "función fija". Rápidamente surgió la necesidad de diversificar el aspecto de los juegos. El renderizado por software no tiene restricciones porque se ejecuta un programa arbitrario. Así, las tarjetas gráficas reintrodujeron esta programabilidad, ejecutando pequeños programas por vértice y por píxel / fragmento , también conocidos como sombreadores . Los lenguajes de sombreado, como High Level Shader Language (HLSL) para DirectX o OpenGL Shading Language (GLSL), son lenguajes de programación similares a C para sombreadores y comienzan a mostrar cierta semejanza con el renderizado por software (de función arbitraria).
Desde la adopción del hardware gráfico como principal medio para la renderización en tiempo real, el rendimiento de la CPU ha crecido de forma constante. Esto permitió el surgimiento de nuevas tecnologías de renderización por software. Aunque en gran medida eclipsados por el rendimiento de la renderización por hardware, algunos renderizadores de software modernos en tiempo real logran combinar un amplio conjunto de características y un rendimiento razonable (para un renderizador de software), mediante el uso de compilación dinámica especializada y extensiones avanzadas del conjunto de instrucciones como SSE . Si bien hoy en día el dominio de la renderización por hardware sobre la renderización por software es indiscutible debido al rendimiento, las características y la continua innovación, algunos creen que las CPU y las GPU convergerán de una forma u otra y la línea entre la renderización por software y por hardware se desvanecerá. [ 3 ]
Solución alternativa de software
Por diversas razones, como fallos de hardware, controladores defectuosos, emulación, control de calidad, programación de software, diseño de hardware y limitaciones de hardware, a veces resulta útil dejar que la CPU asuma algunas o todas las funciones en una canalización gráfica.
Como resultado, existen varios paquetes de software de propósito general capaces de reemplazar o complementar un acelerador gráfico de hardware existente, entre los que se incluyen:
- Pixomatic de RAD Game Tools , vendido como middleware destinado a la vinculación estática dentro del software cliente de D3D 7–9.
- SwiftShader , una biblioteca que se vende como middleware destinada a ser incluida con el software cliente D3D9 y OpenGL ES 2.
- Los renderizadores swrast, softpipe y LLVMpipe integrados en Mesa funcionan como una capa intermedia a nivel de sistema para emular un dispositivo de hardware OpenGL 1.4–3.2. El renderizador lavapipe, también presente en Mesa, proporciona renderizado por software para la API Vulkan .
- WARP , disponible desde Windows Vista por Microsoft, funciona a nivel de sistema para ofrecer una emulación rápida de D3D 9.1 y versiones posteriores. Esto se suma al rasterizador de referencia basado en software, extremadamente lento, que Microsoft siempre ha proporcionado a los desarrolladores.
- El motor de renderizado de software de Apple en CGL , proporcionado por Apple en Mac OS X, funciona a nivel de sistema para ofrecer una emulación rápida de OpenGL 1.1–4.1.
Prerrenderizado
A diferencia del renderizado en tiempo real, el rendimiento es solo una prioridad secundaria en el pre-renderizado. Se utiliza principalmente en la industria cinematográfica para crear renderizados de alta calidad de escenas realistas. Muchos efectos especiales en las películas actuales se crean total o parcialmente mediante gráficos por computadora. Por ejemplo, el personaje de Gollum en las películas de El Señor de los Anillos de Peter Jackson está hecho completamente de imágenes generadas por computadora (CGI). También en las películas de animación , el CGI está ganando popularidad. Cabe destacar que Pixar ha producido películas como Toy Story y Buscando a Nemo , y la Fundación Blender la primera película de código abierto del mundo , Elephants Dream .
Debido a la necesidad de efectos de muy alta calidad y diversidad, el renderizado offline requiere mucha flexibilidad. Aunque el hardware gráfico comercial en tiempo real mejora día a día en calidad y es más programable, la mayoría de las imágenes CGI fotorrealistas aún requieren renderizado por software. RenderMan de Pixar , por ejemplo, permite sombreadores de longitud y complejidad ilimitadas, lo que exige un procesador de propósito general. El hardware antiguo tampoco es capaz de ejecutar técnicas de alto realismo como el trazado de rayos y la iluminación global .
Véase también
Referencias
- ↑ Gustavson, Stefan (10 de abril de 2025). "Hardware Accelerated Graphics" (PDF) . Hardware Graphics 2015 - hardwaregraphics.pdf . Archivado (PDF) del original el 22 de noviembre de 2025. Recuperado el 20 de noviembre de 2025 .
- ↑ "LIVE Design - Visualizaciones interactivas | Autodesk" . Archivado del original el 21 de febrero de 2014. Consultado el 20 de agosto de 2016 .
- ↑ Valich, Theo (11 de marzo de 2008). "Tim Sweeney, Parte 2: "DirectX 10 es la última API gráfica relevante" | TG Daily" . TG Daily . Archivado del original el 4 de marzo de 2016. Recuperado el 7 de noviembre de 2016 .
- Renderizado 3D