Existem algumas respostas realmente boas aqui, apenas para complementá-las.
Uma grande força motriz por trás da renderização de software é a capacidade. Isso foi abordado em uma das respostas, mas vou fazer um ponto oposto: a renderização de software pode realmente ser mais capaz do que a renderização de hardware, e não menos.
Com o hardware, você geralmente se limita às capacidades do próprio hardware, embora o OpenGL para um seja capaz de emular por software muitas coisas que podem não existir no hardware. O que isso significa é que, se você tentar usar o Recurso X, mas o hardware não o suportar, uma das duas coisas acontecerá: você retornará à emulação de software (o cenário típico do OpenGL) ou não conseguirá use-o (o cenário típico do D3D).
Com a renderização do software, você mesmo pode escrever o código. Você consegue manipular as coisas e ter controle total sobre o que acontece até o nível de pixel. Para dar um exemplo de uma explosão do passado, o Quake implementou shaders de pixel em software em 1996, numa época em que as placas 3D (que não eram chamadas de "GPUs" na época)) mal podiam rasterizar algumas dezenas de triângulos texturizados.
Esse também é o caso das GPUs atuais, mas ainda existem partes significativas do pipeline gráfico expostas como funcionalidade fixa (ou mesmo nem expostas).
A renderização de software pode ser melhorada. É relativamente recente que vimos as configurações de várias GPUs se tornarem realmente viáveis, mas o software pode ser escalado em muitos núcleos de CPU em muitos servidores. Você pode ter farms de servidores inteiros dedicados a isso, e os farms de renderização profissionais ainda usarão a renderização de software.
O software pode expor diferentes paradigmas de renderização. O hardware atual está muito focado no paradigma triângulo / vértice / fragmento / rasterização; é um caso de escolher uma coisa e otimizá-la até que grite por misericórdia. As GPUs ainda são uma má escolha para, por exemplo, traçado de raios, que é mais comumente implementado em software.
É claro que quando se trata de uma comparação direta de maçãs para maçãs, uma GPU vence o software em qualquer dia da semana - desde que comparemos áreas em que as GPUs são mais fortes. Mas isso não quer dizer que eles sejam mais fortes em todas as áreas. Apesar disso, e para os fins deste site SE, o uso de hardware geralmente é o caminho a percorrer, mas esteja ciente de que existem casos de uso por aí em que o software também é viável.
A renderização de hardware ou GPU é, como você adivinhou, usando a unidade de processamento gráfico (também conhecida como placa de vídeo) para renderizar uma imagem. O oposto é a renderização de software em que a CPU é usada.
A renderização de software geralmente é usada como substituto quando não há GPU (adequado) disponível. No entanto, como a GPU possui ordens de magnitude, renderizações de software mais rápidas quase nunca são úteis, uma vez que uma CPU geralmente não consegue renderizar imagens em tempo real. A renderização de software é útil quando é necessária uma alta precisão, caso sejam necessárias fórmulas extremamente complicadas para renderizar a imagem. Como as CPUs são de uso geral, as GPUs e, portanto, têm mais recursos. No entanto, esse argumento está se tornando cada vez menos válido, pois hoje as GPUs podem lidar com tarefas cada vez mais complexas e não estão mais limitadas a apenas flutuadores de 32 bits para representar números.
fonte
Eu acho que essa é uma pergunta muito boa.
O que eu posso imaginar é:
A VRAM é mais limitada que a memória RAM geral. No caso de renderização de GPU - cada textura é mais um problema. Você pode armazenar em média cerca de 4 a 8 vezes mais dados na RAM que o VRAM. Obviamente, esse cenário pressupõe que não há sistema responsável por liberar / enviar texturas não utilizadas / necessárias de / para RAM / VRAM
Em termos de multithreading, é muito mais fácil quando você trabalha com a renderização de software - não é necessário compartilhar contextos
Se você estiver criando gráficos 2D - geralmente a maioria das estruturas realiza a implementação da Dirty Rectangles Evaluation - o que resolve muitas questões de desempenho.
Ainda assim, a renderização usando OGL / D3D oferece muito mais desempenho e possibilidades. Os shaders podem fazer coisas realmente incríveis, que são quase impossíveis com a renderização de software.
Mas técnicas como blitting, usando teclas coloridas, têm seu próprio tipo de sentimento como se você estivesse no nível básico, a origem do mundo da computação gráfica.
Eu acho que é pelo menos bom saber sobre a renderização do software. É realmente um mundo muito emocionante, sem mencionar que é a raiz de tudo o que vemos hoje.
fonte