stringtranslate.com

Representación de software

Renderizador de software que se ejecuta en un dispositivo sin GPU

La renderización por software es el proceso de generar una imagen a partir de un modelo mediante software de computadora. En el contexto de la representación de gráficos por computadora , la representación por software se refiere a un proceso de representación que no depende de los ASIC de hardware de gráficos , como una tarjeta gráfica . El renderizado se realiza íntegramente en la CPU . Renderizar todo con la CPU (de uso general) tiene la principal ventaja de que no está restringido a las capacidades (limitadas) del hardware de gráficos, pero la desventaja es que se necesitan más transistores para obtener la misma velocidad.

El renderizado se utiliza en arquitectura, simuladores, videojuegos, efectos visuales de películas y televisión y visualización de diseños. El renderizado es el último paso en un proceso de animación y brinda la apariencia final a los modelos y la animación con efectos visuales como sombreado, mapeo de texturas, sombras, reflejos y desenfoque de movimiento. [1] El renderizado se puede dividir en dos categorías principales: renderizado en tiempo real (también conocido como renderizado en línea) y renderizado previo (también llamado renderizado sin conexión). La renderización en tiempo real se utiliza para renderizar una escena de forma interactiva, como en los juegos de computadora en 3D , y generalmente cada fotograma debe renderizarse en unos pocos milisegundos. La renderización sin conexión se utiliza para crear imágenes y películas realistas, donde cada fotograma puede tardar horas o días en completarse, o para que los programadores depuren códigos de gráficos complejos.

Representación de software en tiempo real

Para el renderizado en tiempo real, la atención se centra en el rendimiento. Los primeros renderizadores de software en tiempo real con mapas de texturas para PC utilizaban muchos trucos para crear la ilusión de geometría 3D (el 3D verdadero se limitaba a polígonos planos o sombreados de Gouraud empleados principalmente en simuladores de vuelo ). Ultima Underworld , por ejemplo, permitía una forma limitada. de mirar hacia arriba y hacia abajo, pisos inclinados y habitaciones sobre habitaciones, pero recurrió a sprites para todos los objetos detallados. La tecnología utilizada en estos juegos actualmente se categoriza como 2.5D .

Uno de los primeros juegos arquitectónicamente similar a los títulos 3D modernos, que permitía 6DoF completo , fue Descent , que presentaba modelos 3D enteramente hechos de polígonos triangulares con textura de mapa de bits. Los gráficos basados ​​en Voxel también ganaron popularidad por su renderizado rápido y relativamente detallado del terreno, como en Delta Force , pero el popular hardware de función fija finalmente hizo imposible su uso. Quake presenta un eficiente renderizador de software de Michael Abrash y John Carmack . Con su popularidad, Quake y otros juegos 3D poligonales de esa época ayudaron a las ventas de tarjetas gráficas , y más juegos comenzaron a usar API de hardware como DirectX y OpenGL . Aunque el renderizado por software cayó como tecnología de renderizado principal, muchos juegos hasta bien entrada la década de 2000 todavía tenían un renderizador por software como alternativa, Unreal y Unreal Tournament , por ejemplo, cuentan con renderizadores por software capaces de producir una calidad y un rendimiento agradables en las CPU de ese período. Uno de los últimos juegos AAA sin renderizador de hardware fue Outcast , que presentaba tecnología de vóxel avanzada pero también filtrado de texturas y mapeo de relieve como los que se encuentran en el hardware de gráficos.

En los mercados de consolas de videojuegos y juegos arcade , la evolución del 3D fue más abrupta, ya que siempre habían dependido en gran medida de conjuntos de chips de un solo propósito. Las consolas de 16 bits obtuvieron cartuchos aceleradores RISC en juegos como StarFox y Virtua Racing , que implementaron la renderización de software a través de conjuntos de instrucciones personalizados. Jaguar y 3DO fueron las primeras consolas que se vendieron con hardware 3D, pero no fue hasta PlayStation que esas características se empezaron a utilizar en la mayoría de los juegos .

Los juegos para niños y jugadores ocasionales (que utilizan sistemas obsoletos o sistemas destinados principalmente a aplicaciones de oficina) desde finales de la década de 1990 hasta principios de la de 2000 normalmente utilizaban un renderizador de software como alternativa. Por ejemplo, Toy Story 2: Buzz Lightyear to the Rescue tiene la opción de seleccionar la renderización por hardware o software antes de jugar, mientras que otros, como Half-Life, utilizan el modo software de manera predeterminada y se pueden ajustar para usar OpenGL o DirectX en el menú Opciones. . Algunos programas de modelado 3D también incluyen renderizadores de software para visualización. Y finalmente, la emulación y verificación de hardware también requiere un renderizador de software. Un ejemplo de esto último es el rasterizador de referencia Direct3D .

Pero incluso para los gráficos de alta gama, el "arte" de la renderización por software no ha desaparecido por completo. Si bien las primeras tarjetas gráficas eran mucho más rápidas que los procesadores de software y originalmente tenían mejor calidad y más funciones, restringieron al desarrollador al procesamiento de píxeles de "función fija". Rápidamente surgió la necesidad de diversificar la apariencia de los juegos. La representación del software no tiene restricciones porque se ejecuta un programa arbitrario. Así, las tarjetas gráficas reintrodujeron esta programabilidad, mediante la ejecución de pequeños programas por vértice y por píxel / fragmento , también conocidos como sombreadores . Los lenguajes de sombreado, como el lenguaje de sombreado de alto nivel (HLSL) para DirectX o el lenguaje de sombreado OpenGL (GLSL), son lenguajes de programación similares a C para sombreadores y comienzan a mostrar cierta semejanza con la representación por software (función arbitraria).

Desde la adopción del hardware de gráficos como medio principal para la renderización en tiempo real, el rendimiento de la CPU ha aumentado constantemente como siempre. Esto permitió que surgieran nuevas tecnologías de renderizado de software. Aunque en gran medida eclipsados ​​por el rendimiento del renderizado por hardware, algunos renderizadores de software en tiempo real modernos logran combinar un amplio conjunto de características y un rendimiento razonable (para un renderizador de software), haciendo uso de compilación dinámica especializada y extensiones de conjuntos de instrucciones avanzadas como SSE . Aunque hoy en día el dominio del renderizado por hardware sobre el renderizado por software es indiscutible debido al rendimiento incomparable, las características y la innovación continua, algunos creen que las CPU y las GPU convergerán de una forma u otra y la línea entre el renderizado por software y hardware se desvanecerá. [2]

Respaldo de software

Por diversas razones, como fallas de hardware, controladores rotos, emulación, garantía de calidad, programación de software, diseño de hardware y limitaciones de hardware, a veces es útil dejar que la CPU asuma algunas o todas las funciones en un proceso de gráficos.

Como resultado, existen varios paquetes de software de propósito general capaces de reemplazar o aumentar un acelerador gráfico de hardware existente, que incluyen:

Pre-renderizado

A diferencia del renderizado en tiempo real, en el renderizado previo el rendimiento sólo tiene una segunda prioridad. Se utiliza principalmente en la industria cinematográfica para crear representaciones de alta calidad de escenas realistas. Muchos efectos especiales de 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 Peter Jackson El Señor de los Anillos es completamente imágenes generadas por computadora (CGI). También en el caso de las películas de animación , el CGI está ganando popularidad. En particular, Pixar ha producido una serie de películas como Toy Story y Buscando a Nemo , y la Fundación Blender la primera película abierta del mundo, Elephants Dream .

Debido a la necesidad de una muy alta calidad y diversidad de efectos, el renderizado fuera de línea requiere mucha flexibilidad. Aunque el hardware comercial de gráficos en tiempo real es cada vez de mayor calidad y más programable cada día, la mayoría de los CGI fotorrealistas todavía requieren renderizado por software. RenderMan de Pixar , por ejemplo, permite sombreadores de longitud y complejidad ilimitadas, lo que exige un procesador de uso general. Las técnicas de alto realismo como el trazado de rayos y la iluminación global tampoco son intrínsecamente adecuadas para la implementación en hardware y, en la mayoría de los casos, se realizan exclusivamente en software.

Ver también

Referencias

  1. ^ "Diseño LIVE - Visualizaciones interactivas | Autodesk". Archivado desde el original el 21 de febrero de 2014 . Consultado el 20 de agosto de 2016 .
  2. ^ Valich, Theo (13 de diciembre de 2012). "Tim Sweeney, Parte 2:" DirectX 10 es la última API de gráficos relevante "| TG Daily". TG diario . Archivado desde el original el 4 de marzo de 2016 . Consultado el 7 de noviembre de 2016 .