3D oyunlar nasıl bu kadar verimli? [kapalı]


188

Hiç anlamadığım bir şey var. GTA IV gibi büyük bir büyük PC oyunu CPU'mun% 50'sini nasıl kullanabilir ve 60fps'de çalışabilirken, dönen bir Demlik @ 60fps'in DX demosu okkalı% 30 kullanıyor?


124
Bu soruda neyin yanlış olduğunu görmüyorum - diğer geliştiricilerin belirli şeyleri nasıl başardığını merak etmek tamamen doğal. Bu tür merakı cesaretlendirmeli, yakın oylarla cezalandırmamalıyız.
John Feminella

2
@ user146780: soruyu kim sordu ... CGI'da çalıştığım yerde tanıştığım en iyi programcılar. SGI'dan Gurus, Adobe Photoshop, vb. Paralelleştirmeye çalışan insanlar. Burada insanlar modern bir oyun yazmanın ne kadar karmaşık olduğunu veya bu kodlayıcıların ne kadar yetenekli olduğunu anlamıyorlar. Mütevazi bir deneyim istiyorsanız, Cryotech'in Almanlarının Crysis motoruyla ne yaptığını görün. Youtube'da videolar var. Sadece inanmayacaksın. Sadece "oktrees kullanmak" ile ilgili değil. Tipik olarak bu programcılar ortalama programcılardan çok daha yeteneklidir. Ve GT4 kodlayıcıların çok iyi olduğuna bahse girebilirsiniz.
SyntaxT3rr0r

2
60 fps'de çalışan gta4 var !? GW! gta4 oldukça zayıf çalışan bir POS, Force unleashed'in de yaptığını duydum. Euphoria'nın suçlu olduğunu söyleyebilirim. dürüst olmak gerekirse, "CPU kullanımı" karşılaştırmak için çok kötü bir yol, sadece kare hızını unutma ve hangisinin daha hızlı çalıştığını görmek, bu doğru bir şekilde. Ayrıca, hatırlayın, bu "karmaşık oyun" birçok şey oluşturabilirken, hala sadece bir şey değerinde bir ekran var ve eğer doğru sırayla işlenirse, neredeyse aynı miktarda piksel çalışmasıyla sonuçlanabilir. "basit" demo ve pikseller gerçekten onu öldüren iş.
matt

8
GPU'nun (Grafik İşlem Birimi) ne kadar kullanıldığını gösteren bir profilciye ihtiyacınız vardır. Bahse girerim GTA IV size ~% 99 ve demo% 3 gösterir.
0scar

Deneyimden, birlikte çalıştığım oyun programcılarının yaklaşık% 10'u iyi, geri kalanı en iyi ortalama. Bazıları tamamen beceriksizdi.
Skizz

Yanıtlar:


69

Genel olarak, çünkü

  1. Oyunlar neyi işlemeleri gerektiği konusunda en uygun ve
  2. Donanımınızdan özel olarak yararlanırlar.

Örneğin, yapabileceğiniz kolay bir optimizasyon, gerçekte görülemeyen şeyleri çizmeye çalışmaz. Grand Theft Auto IV'ten bir şehir manzarası gibi karmaşık bir sahneyi düşünün . Oluşturucu aslında tüm binaları ve yapıları oluşturmuyor. Bunun yerine, yalnızca kameranın görebileceği şekilde oluşturuyor. Aynı binaların arkasına, orijinal kameraya bakacak şekilde uçabilseydiniz, yarı inşa edilmiş oyulmuş bir kabuk yapısı görürdünüz. Kameranın göremediği her nokta oluşturulmaz - göremediğiniz için size göstermeye gerek yoktur.

Ayrıca, daha da iyi hızlanma sağlamak için belirli bir donanıma karşı geliştirdiğinizde optimize edilmiş talimatlar ve özel teknikler mevcuttur.

Sorunuzun diğer kısmı, bir demonun neden bu kadar çok CPU kullandığından kaynaklanıyor:

... dönen bir Demlik @ 60fps bir DX demo% 30 bir boğucu kullanırken?

Grafik API'lerinin (benzeri dxdemo) demolarının donanımınız güzel bir örnek göstermek için gereken tüm özellikleri desteklemediğinde yazılım oluşturucu olarak adlandırılan programa geri dönmesi yaygındır . Bu özellikler arasında gölgeler, yansıma, ışın izleme, fizik, vb.

Bu, API'nın tüm özelliklerini göstermek için mevcut olmayan, tam özellikli bir donanım aygıtının işlevini taklit eder. Ancak donanım gerçekten mevcut olmadığından, bunun yerine CPU'nuzda çalışır. Bu, bir grafik kartına yetki vermekten çok daha verimsiz - dolayısıyla yüksek CPU kullanımınız.


3
Bir DX demosu da donanımınızı kullanır. Peki, 'özel' nedir?
tur1ng

3
ancak bir demonun bu konuda en uygun olması pek olası değildir.
µBio

2
Örneğin, demlik demosu, yansıma , gölgeler ve diğer efektleri etkinleştirmiş olabilir .
Nick Dandoulakis

2
Demlik bir GTA4 sahnesinden daha çok poligona sahip olabilir. Gerçek şu ki, grafik oluşturmadaki mevcut darboğaz, ayrıntılar ve diğer post oluşturma efektleri eklemek için yumru haritalama türetilmiş teknikler gibi daha fazla doku efektidir.
Klaim

5
Dokular - çaydanlık, normaller ve aydınlatma etkileşimleri olan çok sayıda bireysel üçgenden yaratılıyor. Oyunda son derece karmaşık bir 3d dünyaya benzeyen şey, ayrıntılı bir resim ile kaplı oldukça basit büyük bloklardır. '3d' bir sürü 3d şekil üzerinde çizilmiş statik 2d görüntüde akıllı gölge ve perspektif sanatsal etkiler
Martin Beckett

96

Sabır, teknik beceri ve dayanıklılık.

İlk nokta, bir DX Demosu'nun öncelikle bir öğretim yardımcısı olmasıdır, bu nedenle uygulama hızı değil netlik için yapılır.

Yoğunlaşmak oldukça büyük bir konudur, ancak oyun geliştirme öncelikle verilerinizi ve yürütme yollarınızı neredeyse patolojik bir dereceye kadar anlamakla ilgilidir.

  1. Kodunuz iki şey etrafında tasarlanmıştır - verileriniz ve hedef donanımınız.
  2. En hızlı kod, hiçbir zaman yürütülmeyen koddur - verilerinizi toplu olarak sıralayın ve yalnızca yapmanız gereken veriler üzerinde pahalı işlemler yapın
  3. Verilerinizi nasıl sakladığınız çok önemlidir - bitişik erişimi hedefleyin, bu da süreci yüksek hızda toplu olarak yapmanızı sağlar.
  4. Yapabileceğiniz her şeyi parellise edin
  5. Modern CPU'lar hızlı, modern RAM çok yavaş. Önbellek isimleri ölümcül.
  6. GPU'ya olabildiğince fazla itin - hızlı yerel belleğe sahiptir, bu nedenle verilerde yangına neden olabilir, ancak verilerinizi doğru bir şekilde düzenleyerek yardım etmeniz gerekir.
  7. GPU'nun durmasına neden olduğu için çok sayıda render anahtarı yapmaktan kaçının (benzer tepe verilerini tekrar toplu olarak)
  8. Dokularınızı karıştırın ve ikisinin gücü olduklarından emin olun - bu, GPU'daki doku önbellek performansını artırır.
  9. 3D modellerin düşük / orta / yüksek sürümleri ve kamera oynatıcıdan uzaklığa göre geçiş yapmak için olabildiğince fazla ayrıntı düzeyi kullanın, ekranda yalnızca 5 piksel ise yüksek çözünürlüklü bir sürüm oluşturmaya gerek yoktur.

39

3D oyunlar gözlerinizi kandırmak için harika. Örneğin, bir sahnenin yüzey süreksizliklerine yakın olan kısımlarını gölgeleyerek daha gerçekçi bir his veren ekran alanı ortam tıkanıklığı (SSAO) adı verilen bir teknik vardır. Duvarınızın köşelerine bakarsanız, çoğu durumda merkezlerden biraz daha koyu göründüklerini göreceksiniz.

Aynı etki, oldukça doğru simülasyona dayanan radyoloji kullanılarak elde edilebilir. Radiosity ayrıca sıçrayan ışıkların vb. Daha fazla etkisini dikkate alacaktır, ancak hesaplama açısından pahalıdır - bir ışın izleme tekniğidir.

Bu sadece bir örnek. Gerçek zamanlı bilgisayar grafikleri için yüzlerce algoritma vardır ve bunlar esas olarak iyi yaklaşımlara dayanır ve genellikle çok fazla varsayım yapar. Örneğin, mekansal sıralama, kameranın hızına, tipik konumuna ve sahne geometrisindeki değişiklik miktarına bağlı olarak çok dikkatli bir şekilde seçilmelidir.

Bu 'optimizasyonlar' çok büyüktür - bir algoritmayı verimli bir şekilde uygulayabilir ve 10 kat daha hızlı çalıştırabilirsiniz, ancak benzer bir sonuç ("hile") üreten akıllı bir algoritma seçtiğinizde O (N ^ 4) 'den O ( log (N)).

Gerçek uygulamayı optimize etmek oyunları daha da verimli kılan şeydir, ancak bu sadece doğrusal bir optimizasyondur.


30

Eeeeek!

Bu sorunun eski olduğunu biliyorum, ama hiç kimse VSync'den bahsetmediği heyecan verici !!! ???

Oyunun 60fps'de CPU kullanımını, 60fps'de çaydanlık demosunun CPU kullanımı ile karşılaştırdınız.

Her ikisinin de tam olarak 60 fps'de çalıştığı belli değil mi? Bu da cevaba yol açıyor ...

Her iki uygulama da vsync etkinken çalışır! Bu, oluşturma kare hızının monitörünüzün "dikey boş aralığına" kilitlendiği anlamına gelir. Grafik donanımı (ve / veya sürücü) yalnızca maks. 60fps. 60fps = 60Hz (Hz = saniyede) yenileme hızı. Yani muhtemelen oldukça eski, titreyen bir CRT veya ortak bir LCD ekran kullanıyorsunuz. 100Hz'de çalışan bir CRT'de muhtemelen 100Hz'e kadar olan çerçeveler göreceksiniz. VSync ayrıca LCD ekranlara benzer şekilde uygulanır (genellikle 60Hz yenileme hızına sahiptir).

Yani, demlik demosu aslında çok daha verimli çalışabilir! CPU zamanının% 30'unu kullanıyorsa (GTA IV için% 50 CPU zamanı ile karşılaştırıldığında), muhtemelen her kare için daha az işlemci zamanı kullanır ve bir sonraki dikey boş aralık için daha uzun süre bekler. Her iki uygulamayı karşılaştırmak için vsync'yi devre dışı bırakmalı ve tekrar ölçmelisiniz (her iki uygulama için çok daha yüksek fps ölçeceksiniz).

Bazen vsync'i devre dışı bırakmak uygundur (çoğu oyunun ayarlarında bir seçenek vardır). Bazen vsync devre dışı bırakıldığında "yırtılma artıkları" görürsünüz.

Ayrıntılarını ve neden kullanıldığını wikipedia'da bulabilirsiniz: http://en.wikipedia.org/wiki/Vsync


Kabul ediyorum, daha iyi bir karşılaştırma yapmak için vsync'yi devre dışı bırakmalısınız. Ancak, sorunun kökü hala duruyor. Demlik için% 30 ve oyun için% 50 işlemci kullanımı normalde beklenenden daha küçük bir farktır. Ancak, çevre haritalamanın popüler olmaya başladığı ilk günlerde hatırlıyorum ve o sırada havalı nVidia demosu, çevrede dönen bir çevre haritası çaydanlıktı. Bu demolar genellikle günde 60 fps'ye bile vurmazdı. Demek istediğim, bu çaydanlık demolarının genellikle yeni bir görsel efektin sınırlarını zorlaması.
Steve Wortham

25

Birçok cevaplar burada mükemmel göstergelerini sağlar iken nasıl yerine daha basit soruya cevap verecektir neden

Belki de en iyi örnek (kesinlikle en iyi bilinenlerden biri) Id yazılımıdır. Çok erken fark ettiler, Komutan Keen ( 3D'den çok önce) günlerinde , grafiksel olarak üstün olan modern donanıma (bu durumda bir EGA grafik kartı!) Dayansa bile 1 bir şey elde etmenin akıllıca bir yolunu buldular. bunun oyununuzu ön plana çıkaracağı rekabet. Bu doğruydu, ancak daha sonra, yeni oyunlar ve içerik bulmak yerine teknolojiyi lisanslayabilmeleri yerine yeni nesil motoru geliştirirken diğerlerinden gelir elde edebileceklerini ve böylece rekabeti tekrar atlayabileceklerini fark ettiler. .

Bu programcıların yetenekleri (iş anlayışı ile birleştiğinde) onları zengin yapan şeydir.

Bu, bu tür insanları motive etmenin mutlaka para olmadığını söyledi. Büyük olasılıkla başarmak, başarmak arzusu. İlk günlerde kazandıkları para, artık zevk aldıkları şeylere ayırmak için zamanları olduğu anlamına geliyor. Birçoğunun dış çıkarları olsa da neredeyse hepsi hala programlanıyor ve son yinelemeden daha iyisini yapmanın yollarını bulmaya çalışıyor.

Basitçe söylemek gerekirse çaydanlık demosunu yazan kişi muhtemelen aşağıdaki sorunlardan bir veya daha fazlasına sahipti:

  • daha az zaman
  • daha az kaynak
  • daha az ödül teşviki
  • daha az iç ve dış rekabet
  • daha az hedef
  • daha az yetenek

Sonuncusu sert 2 gelebilir, ancak açıkça diğerlerinden daha iyi olan bazıları vardır, çan eğrileri bazen aşırı uçlara sahiptir ve bu beceriyle yapılanın ilgili uç uçlarına çekilme eğilimindedir.

Küçük hedeflerin asıl nedeni bu olabilir. Çaydanlık demosunun hedefi sadece bir demiydi. Ama programcılar beceri bir demo 3 . Bu, (büyük) bir işletim sisteminin küçük bir yüzünün, bu durumda DX oluşturmanın bir demosu olacaktır.

Görüntüleme olanlar için o şekilde daha CPU kullanılan bu Mater olmaz demo gerekli kadar uzun iyi yeterince bakarken. Yararlanıcı olmadığında atığı ortadan kaldırmak için herhangi bir teşvik olmazdı. Buna karşılık bir oyun daha iyi yapay zeka, daha iyi ses, daha çok çokgen, daha fazla efekt için yedek döngülere sahip olmak ister.


  1. bu durumda PC donanımında yumuşak kaydırma
  2. Muhtemelen benden daha fazla, bu yüzden netiz
  3. kesinlikle onun yöneticisine bir demo olurdu, ama yine burada sürücü zaman ve / veya görsel kalite olurdu.

17

Birkaç nedenden dolayı

  • 3D oyun motorları son derece optimize edilmiştir
  • işin çoğu grafik adaptörünüz tarafından yapılır
  • % 50 Hm, çift çekirdekli olduğunu tahmin edeyim ve sadece bir çekirdek kullanılıyor ;-)

DÜZENLEME: Birkaç sayı vermek için

NV-6800 GPU ile 2.8 Ghz Athlon-64. Sonuçlar:

  • İşlemci: 72.78 Mflops
  • Grafik işlemcisi: 2440.32 Mfloplar

@stacker: GPU tarafından yapılmayan birinci sınıf 3D oyunlarda yer alan tüm hesaplamanın aslında mono-iş parçacıklı olduğunu ve bir şekilde CPU'nun% 100'ünü dolduracağını mı ima ediyorsunuz? Yani oyun perfs GPU olmayan bir çekirdeğe bağlı olacak? Bunu bulmak çok inanmak zor.
SyntaxT3rr0r

4
Programın tek iş parçacıklı olduğu anlamına gelmez - en az bir iş parçacığının olabildiğince hızlı gittiği anlamına gelir. Hangisi mantıklı, çünkü neden daha yavaş gitmesini istersiniz? Diğer yandan, birçok oyun neredeyse tamamen tek iş parçacıklıdır. Birden çok iş parçacığı oluşturma sırasında karmaşık simülasyonları etkili bir şekilde yazmak çok zordur, çünkü eşzamanlı / dağıtılmış sistemlerde çok daha fazla iş hacmi satın almak için biraz daha fazla gecikmeyi kabul eden tipik durum, duyarlı olması gereken bir oyun için iyi değildir.
Kylotan

8

Bazen bir sahnede göründüğünden daha fazla şey olabilir. Örneğin, binlerce köşesi, çevre eşlemesi, yumru eşlemesi ve diğer karmaşık piksel gölgelendiricilerinin eşzamanlı olarak oluşturulduğu dönen bir demlik, çok fazla işlem gerektirir. Çoğu zaman bu çaydanlık demoları sadece bir tür özel etki göstermek içindir. Ayrıca, mutlak performans hedef olmadığında GPU'dan en iyi şekilde yararlanamayabilirler.

Bir oyunda benzer efektler görebilirsiniz, ancak genellikle kare hızını en üst düzeye çıkarmak için tehlikeye atılmış bir şekilde yapılır. Bu optimizasyonlar oyunda gördüğünüz her şeye uzanıyor. Sorun, "En az işlem gücüne sahip en muhteşem ve gerçekçi sahneyi nasıl oluşturabiliriz?" Oyun programcılarını en iyi optimize ediciler yapan şey budur.


4
  1. Sahne yönetimi. kd ağaçları, sinir kırma, bsps, heirarchical sınırlayıcı kutular, kısmi görünürlük setleri.
  2. LOD. Uzaktaki nesnelerin yerini alacak daha düşük ayrıntı sürümlerini değiştirme.
  3. Sahtekarlar. LOD gibi ama bir nesne bile sadece bir resim veya 'billboard' değil.
  4. SIMD.
  5. Özel bellek yönetimi. Hizalanmış bellek, daha az parçalanma.
  6. Özel veri yapıları (yani STL yok, nispeten minimal şablonlama).
  7. Özellikle SIMD için yerlerde montaj.

4

Verilen tüm nitelikli ve iyi cevaplarla, hala eksik olan: Windows'un CPU kullanım sayacı çok güvenilir değil. Sanırım bu basit çaydanlık demosu sadece boş döngüde işleme işlevini çağırıyor, arabellek değişiminde engelliyor.

Şimdi Windows CPU kullanım sayacı, her işlemde ne kadar CPU zamanı harcandığına bakar, ancak bu CPU zamanının nasıl kullanıldığına bakar. Bir eklemeyi deneyin

Sleep(0);

oluşturma işlevinden döndükten hemen sonra karşılaştırın.


CPU'mun her zaman% 25'ini kullanan bir DX çaydanlık demom vardı. Dört çekirdekli olduğumdan ve oyun döngüsünü 60 fps'de kilitlemek için, zamanı sürekli kontrol eden bir "Henüz orada mıyız?" Uykuya geçtim (timeToNextFrame) ve cpu kullanımı 0'a düştü.
Jonathan Pierce

3

Buna ek olarak, hesaplama gücünü korumak için sanatsal açıdan birçok püf noktası vardır. Birçok oyunda, özellikle de eski oyunda, gölgeler önceden hesaplanır ve haritanın dokularında "pişirilir". Çoğu zaman, sanatçılar çoğunlukla aynı görüneceği zaman ağaçlar ve özel efektler gibi şeyleri temsil etmek için uçakları (iki üçgen) kullanmaya çalıştılar. Oyunlardaki sis, uzaktaki nesneleri işlemekten kaçınmanın kolay bir yoludur ve çoğu zaman oyunların uzak, orta ve yakın görünümler için her nesnenin birden çok çözünürlüğü vardır.


1

Herhangi bir cevabın çekirdeği şu olmalıdır - 3D motorların gerçekleştirdiği dönüşümler çoğunlukla toplama ve çarpmalarda (doğrusal cebir) (dallar veya atlamalar yok) belirtilir, bir çizimin işlemleri genellikle tek bir karenin bu tür eklenti işleri paralel olarak yapılabilir. GPU çekirdekleri çok iyi add-mul'lardır ve düzinelerce veya yüzlerce add-mull çekirdeği vardır.

CPU, AI ve diğer oyun mantığı gibi basit şeyler yapmaya bırakıldı.


1

GTA IV gibi büyük bir büyük PC oyunu CPU'mun% 50'sini nasıl kullanabilir ve 60fps'de çalışabilirken, dönen bir Demlik @ 60fps'in DX demosu okkalı% 30 kullanıyor?

GTA'nın DX demodan daha verimli olması muhtemel olsa da, CPU verimliliğini bu şekilde ölçmek esasen kırılmıştır. Verimlilik, örneğin verilen zaman başına ne kadar iş yaptığınızla tanımlanabilir. Basit bir karşı örnek: mantıksal CPU başına bir iş parçacığı oluşturur ve üzerinde basit bir sonsuz döngü çalışmasına izin verir. % 100 CPU kullanımı elde edersiniz, ancak yararlı bir iş yapılmadığı için verimli değildir.

Bu da bir cevaba yol açar: Bir oyun nasıl verimli olabilir? "Büyük büyük oyunları" programlarken, oyunu her yönüyle optimize etmek için büyük bir çaba harcanmaktadır (günümüzde genellikle çok çekirdekli optimizasyonları da içermektedir). DX demosuna gelince, amacı hızlı koşmak değil, kavramları göstermek.


1

CPU yerine GPU kullanımına bir göz atmanız gerektiğini düşünüyorum ... Grafik kartının GTA IV'te Çaydanlık örneğinden çok daha yoğun olduğuna eminim (pratik olarak boş olmalıdır).

Belki aşağıdakileri kontrol etmek için bu monitör gibi bir şey kullanabilirsiniz:

http://downloads.guru3d.com/Rivatuner-GPU-Monitor-Vista-Sidebar-Gadget-download-2185.html

Ayrıca, kare hızı dikkate alınması gereken bir şeydir, belki çaydanlık örneği tam hızda çalışıyor olabilir (belki 1000 fps) ve çoğu oyun monitörün yenileme frekansıyla (yaklaşık 60 fps) sınırlıdır.


1

Vsync cevabına bakın; bu yüzden aynı kare hızında çalışıyorlar.

İkincisi, CPU bir oyunda liderlik özlüyor. Basitleştirilmiş bir açıklama, ana oyun döngüsünün sadece sonsuz bir döngü olduğudur:

while(1) { 
  update();
  render();
}

Oyununuz (veya bu durumda çaydanlık) fazla bir şey yapmasa bile, hala döngünüzde CPU yiyorsunuz.

GTA'daki% 50 işlemci, demodaki% 30'dan sonra "daha üretken", çünkü muhtemelen fazla bir şey yapmıyor; ancak GTA tonlarca ayrıntıyı güncelliyor. Demoya bir "Uyku (10)" eklemek bile CPU'yu bir ton düşürecektir.

Son olarak GPU kullanımına bakın. Demo, modern bir video kartında muhtemelen <% 1 alıyor, GTA muhtemelen oyun sırasında çoğunluk alacak.

Kısacası, karşılaştırma ölçütleriniz ve ölçümleriniz doğru değil.


1

DX çaydanlık demosu, CPU'nun% 30'unu yararlı işler yapmıyor. Meşgul bekliyor çünkü yapacak başka bir şeyi yok.


0

Unreal serisinden bildiğim kadarıyla bazı sözleşmeler kapsülleme gibi kırılıyor. Kod, oyuna bağlı olarak bayt koduna veya doğrudan makine koduna derlenir. Ayrıca, nesneler bir kafes biçiminde oluşturulur ve paketlenir ve dokular, aydınlatma ve gölgeler gibi şeyler önceden hesaplanırken, saf bir 3d animasyon bu gerçek zamanı gerektirir. Oyun gerçekten çalışırken, sadece bir nesnenin sadece görünür kısımlarını oluşturmak ve doku detayını sadece yakınken göstermek gibi bazı optimizasyonlar da vardır. Son olarak, video oyunlarının belirli bir zamanda bir platformdan en iyi şekilde yararlanacak şekilde tasarlanması muhtemeldir (ör: Intelx86 MMX / SSE, DirectX, ...).


0

Bence cevabın burada önemli bir kısmı eksik. Cevapların çoğu size "Verilerinizi tanıyın" demektedir. Gerçek şu ki, aynı şekilde ve aynı derecede önemle, aşağıdakileri de bilmelisiniz:

  • CPU (saat ve önbellekler)
  • Bellek (frekans ve gecikme)
  • Sabit sürücü (hız ve arama süreleri açısından)
  • GPU (# çekirdek, saat ve Belleği / Önbellekleri)
  • Arayüzler: Sata kontrolörleri, PCI revizyonları, vb.

Ancak , mevcut modern bilgisayarlarla, >> 30ftp'de gerçek bir 1080p video oynatamazsınız (64 bitlik tek bir 1080p görüntü 15.000 Ko / 14.9 MB alacaktır). Bunun nedeni örnekleme / hassasiyettir. Bir video oyunu pikseller, görüntüler, veriler vb.İçin asla çift duyarlık (64 bit) kullanmaz, daha doğrusu daha düşük özel hassasiyet (~ 4-8 bit) kullanır ve bazen makul hesaplamaya izin vermek için enterpolasyon teknikleriyle yeniden ölçeklendirilir. zaman.

Verilerin kırpılması (hem OpenGL standardında hem de yazılım uygulamasında), Veri sıkıştırması vb. Gibi başka teknikler de vardır. Ayrıca, mevcut GPU'ların donanım yeteneği açısından mevcut CPU'lardan 300 kat daha hızlı olabileceğini unutmayın. Ancak, sorununuz tamamen optimize edilmemiş ve tamamen paralelleştirilemezse (özellikle görev paralelleştirilebilir) iyi bir programcı 10-20x faktörü alabilir.

Deneyimle, optimizasyonun üstel bir eğri gibi olduğunu söyleyebilirim. En iyi performansa ulaşmak için gereken süre inanılmaz derecede önemli olabilir.

Çaydanlığa geri dönmek için geometrinin nasıl temsil edildiğini, örneklendiğini ve GTA 5'te geometri / dokular ve en önemlisi ayrıntıların (hassasiyet, örnekleme vb.

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.