Bugün neden donanım oluşturma üzerinden yazılım oluşturmayı kullanasınız?


13

CPU veya yazılım oluşturmanın aksine sanırım?

Genellikle OpenGL veya Direct X kullandığınızı gören mevcut işlemlerin tümü GPU tabanlı olmaz mıydı?

Birisi bana burada bilgi verebilir mi, uygun cevap bulamıyor mu?

Yanıtlar:


7

GPU oluşturmanın ne olduğunu açıkça bildiğiniz gibi ... sormak istediğinize cevap vereyim.

Geleneksel olarak, donanım oluşturma çok karmaşık olma damgasını taşımaktadır. Bu, büyük ölçüde gizliliği karmaşıklaştırmaya yönelik olmayan uygulama programlama arayüzlerinin (API) tasarımından kaynaklanmaktadır; yani öğrenme eğrisi diktir. Ayrıca kısmen, bu API'ların yoğun bir şekilde kullanıldığı 3D uygulamaların yazılmasının 2D uygulamaların yazılmasından çok daha karmaşık olduğu anlayışından dolayı olmuştur. Yeniden arayüz karmaşıklığı, ben OpenGL ve DirectX gibi arayüzlere atıfta bulunuyorum. 3D - 2D'ye karşı, 3D sahneler oluşturmaya başlayan matematik ve geometriye, eğitimsiz zihnin 2D problemlerine yaklaşabileceği sadeliğe atıfta bulunuyorum.

Bununla birlikte, son yıllarda, sadece öğrenme materyalleri çok daha kullanılabilir hale gelmekle kalmadı, aynı zamanda, bu arayüzlerin altında yatan karmaşıklıkları saran birçok kütüphane mevcut hale geldi ve giriş engellerini azalttı. Tüm bunlar, görselleştirmenin, kaygan kullanıcı arayüzlerinin ve düşük güçlü cihazlardaki performansın artan önemi nedeniyle zaten mevcut olan artan ilgi döngüsüne geri döndü.

Bu nedenle, yazılım oluşturma ve 2B oluşturma, grafiklerde yeni olan ve / veya oluşturmanın bir projede kullanılabilir sürenin çok fazla zaman almadığı bir ürün oluşturmak isteyenler için iyi giriş noktaları ve odak alanları olmuştur. En azından 2D ile ilgili olarak, bu hala geçerlidir; teknolojisi, GPU'ya 2D render getirme boşluğunu büyük ölçüde kapladı.


20

Burada gerçekten iyi cevaplar var, bu yüzden onları tamamlamak için.

Yazılım oluşturma işleminin ardındaki önemli itici güç yetenektir. Cevaplardan birinde bu konuya değinildi, ancak karşıt bir noktaya değineceğim: yazılım oluşturma aslında donanım oluşturmadan daha yetenekli olabilir , daha az değil.

Donanımla genellikle donanımın kendisinin yetenekleriyle sınırlı olursunuz, ancak bir tanesi için OpenGL, donanımda bulunamayan birçok şeyin yazılım öykünmesini yapabilir. Bunun anlamı, Özellik X'i kullanmaya çalışırsanız ancak donanım bunu desteklemezse, iki şeyden biri gerçekleşir: ya yazılım öykünmesine (tipik OpenGL senaryosu) geri dönersiniz ya da hiç kullanmayın (tipik D3D senaryosu).

Yazılım oluşturma ile kodu kendiniz yazabilirsiniz. Bir şeyleri manipüle edebilir ve piksel seviyesine kadar olan şey üzerinde tam kontrole sahip olursunuz. Geçmişten bir patlama örneği vermek için, Quake'in 1996 yılında yazılımda piksel gölgelendiricileri kullanmıştı, 3D kartlar (o zaman "GPU" olarak adlandırılmamışlardı) birkaç düzine dokulu üçgeni zar zor rasterleştirebildiler.

Bu, mevcut GPU'lar için de geçerlidir, ancak grafik boru hattının sabit işlevsellik olarak maruz kalan (veya hiç maruz kalmayan) önemli parçaları vardır.

Yazılım oluşturma daha iyi ölçeklenebilir. Çok GPU kurulumlarının gerçekten uygulanabilir hale geldiğini görüyoruz, ancak yazılım birçok sunucudaki birçok CPU çekirdeği arasında ölçeklenebilir. Tüm sunucu çiftliklerinin buna adanmış olmasını sağlayabilirsiniz ve profesyonel oluşturma çiftlikleri yine de yazılım oluşturmayı kullanacaktır.

Yazılım farklı oluşturma paradigmalarını ortaya çıkarabilir. Mevcut donanım üçgen / tepe / parça / rasterleştirme paradigması etrafında yoğunlaşmıştır; bir şeyi seçip merhamet için çığlık atana kadar optimize etme durumudur. GPU'lar hala yazılımda daha yaygın olarak uygulanan ışın izleme için kötü bir seçimdir.

Tabii ki doğrudan elmalar-elmalar karşılaştırması söz konusu olduğunda, GPU'ların daha güçlü olduğu alanları karşılaştırmamız şartıyla, bir GPU haftanın her günü yazılımı yenecektir. Ama bu her alanda daha güçlü oldukları anlamına gelmiyor. Buna rağmen ve bu SE sitesinin amaçları için, donanım kullanmak genellikle bir yoldur, ancak yazılımın da uygulanabilir olduğu kullanım durumlarının olduğunu unutmayın.


8
+1 için "yazılım oluşturma, aslında daha az değil, donanım oluşturma işleminden daha yetenekli olabilir."
concept3d

10

Donanım veya GPU oluşturma , bir görüntüyü oluşturmak için grafik işleme birimini (Video Kartı olarak da bilinir) tahmin ettiğiniz gibi. Bunun tersi, CPU'nun kullanıldığı yazılım oluşturmadır .

Yazılım oluşturma (kullanılabilir) GPU olmadığında genellikle bir yedek olarak kullanılır. Bununla birlikte, GPU büyüklük sıraları olduğundan, CPU genellikle görüntüleri gerçek zamanlı olarak işleyemeyeceğinden, yazılım oluşturma işlemleri neredeyse hiç yararlı olmaz. Görüntüyü oluşturmak için çok karmaşık formüllerin gerekli olması durumunda yüksek hassasiyet gerektiğinde yazılım oluşturma yararlıdır. CPU'lar GPU'lardan daha genel bir amaç olduğundan ve daha fazla kapasiteye sahiptir. Ancak bugünlerde GPU'lar gittikçe daha karmaşık görevleri yerine getirebildiklerinden ve sayıları temsil etmek için sadece 32 bit kayan noktalarla sınırlı olmadığından bu argüman gittikçe daha az geçerli hale geliyor.


2

Bence bu gerçekten iyi bir soru.

Ne hayal edebiliyorum:

  • VRAM, genel RAM belleğinden daha sınırlıdır. GPU oluşturma durumunda - her doku daha çok sorun teşkil eder. RAM'de VRAM'den ortalama 4 ila 8 kat daha fazla veri depolayabilirsiniz. Elbette bu senaryo, kullanılmayan / gerekli dokuların RAM / VRAM'den serbest bırakılmasından / itilmesinden sorumlu bir sistem olmadığını varsayar.

  • Çok iş parçacığı oluşturma açısından, yazılım oluşturma ile çalışırken çok daha kolay - bağlamları paylaşmaya gerek yok

  • 2D grafikler yapıyorsanız - genellikle çoğu çerçeve Kirli Dikdörtgenler Değerlendirmesinin uygulanmasına devam eder - birçok performans sorununu çözen şey.

Yine de, OGL / D3D kullanarak renderleme çok daha fazla performans ve olasılık sağlar. Gölgelendiriciler, yazılım oluşturma ile neredeyse imkansız olan gerçekten şaşırtıcı şeyler yapabilirler.

Ancak, blitting, colorkeys kullanmak gibi teknikler, temel düzeyde, bilgisayar grafikleri dünyasının kökeni gibi hissediyorlar.

Yazılım oluşturma hakkında bilmek en azından iyi olduğunu düşünüyorum. Gerçekten çok heyecan verici bir dünya, bugün gördüğümüz her şeyin kökü olduğundan bahsetmiyoruz.


1
Gölgelendiricileri çalıştırmak için donanım hızlandırmaya ihtiyacınız yoktur. OS X 10.9, GL4'ün eksiksiz bir yazılım uygulaması ile birlikte gelir. Performans, yazılım oluşturma için inanılmaz derecede iyidir; gerçekçi bir şekilde gerçekçi oyunlar oynayabileceğiniz nokta değil (adil olmak gerekirse, Apple'ın ürünlerini gönderdiği GPU'lar da değildir), ancak Direct3D referans rasterleştirici gibi bir şey kullanmaktan çok daha pratiktir. Aslında çalışan yazılım kullanarak gemi olabilir bir şeydir.
Andon

@ AndonM.Coleman Herkes Apple kullanmıyor ve Linux ve Windows'ta gölgelendiricileri destekleyen yazılım oluşturucuları bilmiyorum.
luke1985

1
Ama benim açımdan bu değildi. Tamamen işlevsel gölgelendiricilerin tamamen CPU üzerinde çalıştığı OpenGL uygulamaları vardır. Apple'ın geliştirici olması büyük önemsizdir. Cevabınız, OpenGL'de modern gölgelendiricileri çalıştırmak için bir GPU'ya sahip olmanız gerektiğini düşündüğünüz izlenimini verdi.
Andon M. Coleman

@ AndonM.Coleman Ve bu neredeyse doğrudur, çünkü vakaların% 80'inde yapmanız gerekir.
luke1985

2
Gölgelendiriciler yazılım oluşturma yoluyla kolayca uygulanabilir, Tomb Raider 1 ve Quake 1'in piksel gölgelendiricileri bile olabilir. Tam tersi, bir CPU size mevcut GPU'ların sınırlayıcı tepe / parça boru hattından daha fazla kontrol sağlar.
lama12345
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.