Ada beberapa jawaban yang sangat bagus di sini, jadi tambahkan saja.
Kekuatan pendorong utama di balik perenderan perangkat lunak adalah kemampuan. Ini disinggung di salah satu jawaban, tapi saya akan membuat titik yang berlawanan: rendering perangkat lunak sebenarnya bisa lebih mampu daripada rendering perangkat keras, tidak kurang.
Dengan perangkat keras Anda umumnya terbatas pada kemampuan perangkat keras itu sendiri, meskipun OpenGL untuk satu mampu-emulasi banyak hal yang mungkin tidak ada dalam perangkat keras. Apa artinya itu adalah bahwa jika Anda mencoba menggunakan Fitur X tetapi perangkat keras tidak mendukungnya, salah satu dari dua hal akan terjadi: Anda akan kembali ke emulasi perangkat lunak (skenario OpenGL khas) atau Anda tidak bisa gunakan sama sekali (skenario D3D khas).
Dengan perenderan perangkat lunak, Anda dapat menulis kode sendiri. Anda dapat memanipulasi sesuatu dan memiliki kontrol penuh atas apa yang terjadi hingga tingkat piksel. Untuk memberikan contoh ledakan dari masa lalu, Quake menerapkan pixel shaders pada perangkat lunak pada tahun 1996, pada saat kartu 3D (mereka tidak disebut "GPU" saat itu) hampir tidak dapat meraster beberapa lusin segitiga bertekstur.
Ini lebih banyak terjadi pada GPU saat ini juga, tetapi masih ada bagian signifikan dari pipa grafis yang terpapar sebagai fungsi tetap (atau bahkan tidak terpapar sama sekali).
Render perangkat lunak dapat ditingkatkan dengan lebih baik. Hanya relatif baru bahwa kita telah melihat pengaturan multi-GPU menjadi sangat layak, tetapi perangkat lunak dapat skala di banyak banyak core CPU di banyak banyak server. Anda dapat memiliki seluruh server farm yang didedikasikan untuk ini, dan farm render profesional masih akan menggunakan rendering perangkat lunak.
Perangkat lunak dapat mengekspos paradigma rendering yang berbeda. Perangkat keras saat ini sangat fokus pada paradigma triangle / vertex / fragment / rasterization; itu adalah kasus memilih satu hal dan mengoptimalkannya sampai ia berteriak minta ampun. GPU masih merupakan pilihan yang buruk untuk misalnya ray tracing, yang lebih umum diimplementasikan dalam perangkat lunak.
Tentu saja ketika menyangkut perbandingan apel langsung dengan apel, GPU akan mengalahkan perangkat lunak setiap hari dalam seminggu - asalkan kita membandingkan area di mana GPU lebih kuat. Tapi itu tidak berarti bahwa mereka lebih kuat di setiap bidang. Meskipun demikian, dan untuk keperluan situs SE ini, menggunakan perangkat keras pada umumnya adalah cara untuk pergi tetapi hanya perlu diketahui bahwa ada kasus penggunaan di luar sana di mana perangkat lunak juga layak.
Perangkat keras atau rendering GPU , seperti yang Anda duga menggunakan unit pemrosesan grafis (alias Kartu Video) untuk membuat gambar. Yang sebaliknya adalah perenderan perangkat lunak tempat CPU digunakan.
Render perangkat lunak biasanya digunakan sebagai fallback ketika tidak ada (cocok) GPU tersedia. Namun karena GPU adalah urutan besarnya, peranti lunak yang dibuat lebih cepat hampir tidak pernah berguna karena CPU biasanya tidak dapat membuat gambar secara real time. Render perangkat lunak berguna ketika dibutuhkan ketelitian tinggi jika formula yang sangat rumit diperlukan untuk membuat gambar. Karena CPU lebih bersifat umum maka GPU dan dengan demikian memiliki lebih banyak kemampuan. Namun argumen ini menjadi semakin tidak valid karena GPU saat ini dapat menangani tugas yang semakin kompleks dan tidak lagi terbatas pada floats hanya 32bit untuk merepresentasikan angka.
sumber
Saya pikir ini adalah pertanyaan yang sangat bagus.
Yang bisa saya bayangkan adalah:
VRAM lebih terbatas daripada memori RAM umum. Dalam hal rendering GPU - setiap tekstur lebih merupakan masalah. Anda dapat menyimpan rata-rata sekitar 4 hingga 8 kali lebih banyak data dalam RAM daripada VRAM. Tentu saja skenario ini mengasumsikan bahwa tidak ada sistem yang bertanggung jawab untuk membebaskan / mendorong tekstur yang tidak terpakai / diperlukan dari / ke RAM / VRAM
Dalam hal multithreading jauh lebih mudah ketika Anda bekerja dengan rendering perangkat lunak - tidak perlu berbagi konteks
Jika Anda melakukan grafis 2D - biasanya sebagian besar kerangka kerja menerapkan penerapan Dirty Rectangles Evaluation - yang memecahkan banyak masalah kinerja.
Namun, rendering menggunakan OGL / D3D memberikan banyak kinerja dan kemungkinan. Shader dapat melakukan hal-hal yang benar-benar menakjubkan, yang hampir tidak mungkin dilakukan dengan perenderan perangkat lunak.
Tetapi teknik seperti blitting, menggunakan colorkey, memiliki perasaan sendiri seolah-olah Anda berada di level dasar, asal dari dunia komputer grafis.
Saya pikir setidaknya baik untuk mengetahui tentang perenderan perangkat lunak. Ini benar-benar dunia yang sangat menarik, tidak menyebutkan bahwa itu adalah akar dari semua yang kita lihat hari ini.
sumber