Aquí hay algunas respuestas realmente buenas, así que solo para complementarlas.
Una de las principales fuerzas impulsoras del procesamiento de software es la capacidad. Esto se mencionó en una de las respuestas, pero voy a hacer un punto opuesto: la representación de software en realidad puede ser más capaz que la representación de hardware, no menos.
Con el hardware, generalmente está limitado a las capacidades del hardware en sí mismo, aunque OpenGL para uno es capaz de emular software de muchas cosas que pueden no existir en el hardware. Lo que eso significa es que si intenta usar la función X pero el hardware no lo admite, sucederá una de dos cosas: o volverá a la emulación de software (el escenario típico de OpenGL) o no podrá úselo (el típico escenario D3D).
Con la representación de software, puede escribir el código usted mismo. Puedes manipular cosas y tener un control total sobre lo que sucede hasta el nivel de píxeles. Para dar un ejemplo de una explosión del pasado, Quake implementó sombreadores de píxeles en el software en 1996, en un momento en que las tarjetas 3D (no se llamaban "GPU" entonces) apenas podían rasterizar unas pocas docenas de triángulos texturizados.
Este es más el caso con las GPU actuales también, pero todavía hay partes significativas de la tubería de gráficos que están expuestos como una funcionalidad fija (o incluso no están expuestos en absoluto).
El renderizado de software puede escalar mejor. Es relativamente reciente que hayamos visto que las configuraciones de múltiples GPU se vuelven realmente viables, pero el software puede escalar en muchos núcleos de CPU en muchos servidores. Puede tener granjas de servidores enteras dedicadas a esto, y las granjas de renderizado profesional seguirán utilizando la representación de software.
El software puede exponer diferentes paradigmas de representación. El hardware actual está muy centrado en el paradigma triángulo / vértice / fragmento / rasterización; se trata de elegir una cosa y optimizarla hasta que grite por piedad. Las GPU siguen siendo una mala elección para, por ejemplo, el trazado de rayos, que se implementa más comúnmente en el software.
Por supuesto, cuando se trata de una comparación directa de manzanas con manzanas, una GPU vencerá al software cualquier día de la semana, siempre que comparemos áreas donde las GPU son más fuertes. Pero eso no quiere decir que sean más fuertes en todas las áreas. A pesar de eso, y para los propósitos de este sitio SE, el uso de hardware es generalmente el camino a seguir, pero solo tenga en cuenta que existen casos de uso en los que el software también es viable.
El procesamiento de hardware o GPU es, como adivinó, el uso de la unidad de procesamiento gráfico (también conocida como Tarjeta de video) para renderizar una imagen. Lo contrario es la representación de software donde se utiliza la CPU.
El renderizado de software generalmente se usa como respaldo cuando no hay una GPU (adecuada) disponible. Sin embargo, dado que la GPU es de órdenes de magnitud, los renderizadores de software más rápidos casi nunca son útiles, ya que una CPU generalmente no podrá renderizar imágenes en tiempo real. El renderizado de software es útil cuando se necesita una alta precisión si se requieren fórmulas extremadamente complicadas para renderizar la imagen. Como las CPU tienen un propósito más general que las GPU, tienen más capacidades. Sin embargo, este argumento se está volviendo cada vez menos válido ya que las GPU de hoy en día pueden manejar tareas cada vez más complejas y ya no se limitan a flotadores de 32 bits para representar números.
fuente
Creo que esta es una muy buena pregunta.
Lo que puedo imaginar es:
VRAM es más limitado que la memoria RAM general. En el caso de la renderización de GPU, cada textura es más un problema. Puede almacenar en promedio aproximadamente 4 a 8 veces más datos en RAM que VRAM. Por supuesto, este escenario supone que no hay un sistema que sea responsable de liberar / empujar las texturas no utilizadas / requeridas de / a RAM / VRAM
En términos de subprocesos múltiples, es mucho más fácil cuando trabajas con el renderizado de software: no es necesario compartir contextos
Si está haciendo gráficos en 2D, por lo general, la mayoría de los marcos continúan implementando la Evaluación de rectángulos sucios, lo que resuelve muchos problemas de rendimiento.
Aún así, la representación con OGL / D3D ofrece mucho más rendimiento y posibilidades. Los sombreadores pueden hacer cosas realmente sorprendentes, que son casi imposibles con el renderizado de software.
Pero las técnicas como el bliting, el uso de teclas de colores, tienen su propia sensación de estar en el nivel base, el origen del mundo de los gráficos por computadora.
Creo que al menos es bueno saber acerca de la representación del software. Es realmente un mundo muy emocionante, sin mencionar que es la raíz de todo lo que vemos hoy.
fuente