Здесь есть несколько действительно хороших ответов, поэтому просто дополню их.
Основной движущей силой рендеринга программного обеспечения является возможность. Это было затронуто в одном из ответов, но я собираюсь сделать противоположное замечание: программный рендеринг на самом деле может быть более мощным, чем аппаратный рендеринг, а не меньше.
С аппаратным обеспечением вы, как правило, ограничены возможностями самого оборудования, хотя OpenGL для одного способен к программной эмуляции многих вещей, которые могут отсутствовать в оборудовании. Это означает, что если вы попытаетесь использовать Feature X, но оборудование не поддерживает ее, произойдет одно из двух: либо вы вернетесь к программной эмуляции (типичный сценарий OpenGL), либо не доберетесь до использовать его вообще (типичный сценарий D3D).
С программным рендерингом вы можете написать код самостоятельно. Вы можете манипулировать вещами и иметь полный контроль над тем, что происходит вплоть до уровня пикселей. Чтобы привести пример взрыва из прошлого, в Quake были реализованы пиксельные шейдеры в программном обеспечении еще в 1996 году, когда 3D-карты (тогда их еще не называли «графическими процессорами») могли растеризовать несколько десятков текстурированных треугольников.
Это в большей степени относится и к текущим графическим процессорам, но все еще есть существенные части графического конвейера, которые представлены как фиксированные функциональные возможности (или даже не представлены вообще).
Программное обеспечение рендеринга может масштабироваться лучше. Только относительно недавно мы увидели, что установки с несколькими графическими процессорами стали действительно жизнеспособными, но программное обеспечение может масштабироваться на множество ядер ЦП на многих серверах. Вы можете иметь целые фермы серверов, выделенные для этого, и профессиональные фермы рендеринга по-прежнему будут использовать программный рендеринг.
Программное обеспечение может предоставлять различные парадигмы рендеринга. Современное оборудование очень сфокусировано на парадигме треугольник / вершина / фрагмент / растеризация; это случай выбора одной вещи и ее оптимизации до тех пор, пока она не закричит о пощаде. Графические процессоры по-прежнему плохой выбор, например, для трассировки лучей, который чаще всего применяется в программном обеспечении.
Конечно, когда речь идет о прямом сравнении яблок с яблоками, графический процессор побеждает программное обеспечение в любой день недели - при условии, что мы сравниваем области, где графические процессоры сильнее. Но это не значит, что они сильнее в каждой области. Несмотря на это, и для целей этого сайта SE, использование оборудования, как правило, путь, но просто имейте в виду, что есть случаи использования, где программное обеспечение также жизнеспособно.