leonscottkfm

Unreal MVP
31 May 2015
1,540
5
219
63
28
(34) İstanbul Avrupa
store.steampowered.com



Gördüğünüz gibi boş bir sahnede 8GB Vram yiyor. Millet bu boş mapte oynadığında 8gb vram mi yiyecek yani ? Sebebi ne bunun ? Fizik yasasına aykırı bu bir defa. Sahnede Vram yiyecek hiçbir şey yok çünkü. Boş yere alanı talan ediyor bu motor.

r.streaming.poolsize 500 yaptım hala 8 gb yiyor. Sahneyi azcık doldursam 12gb yemeye başlıyor. 20 gb kart var kartın %75 ini yiyor durduk yerde. Ayarı falan yok mu bunun ne yapmak lazım ? Acayip şekilde yiyor öyle böyle değil boş yere yiyor birde. Hani sahne olsa tamam diyecem. Çünkü ben Resident evil 4 remake yükledim dün tüm ayarları maxladım 15gb kart kullandırdım oyuna devasa grafik vardı çevre doluydu oyunda anca 14 gb yiyordu. Bu motor boş sahnede 10 gb yiyor ?







Ortada fol yok fos yok daha proje açmadım 3.5gb vram yemeye başladı. Unreali kapatıyorum 2500 mb vram kullanılıyor windows tarafından :D







Boş Level 800 mb pool atanmış zaten o kadar lazım en fazla ama 5gb ve üstü yiyor.

Bunun doğrudan unrealle ilgisi olduğunu sanmıyorum. 1500 mb boşta olan VRAM , Steamı açınca 3000 MB oluyor ne alaka ? Grafik mi işlenmiyor da 3gb ye çıkıyor o ? Şimdi milletin 4gb vramı var ise benim oyunu açamayacak mı ? Yoksa Ram mantığı mı işliyor burada da ?

Aç gözlü davranıp fazla fazla olduğunda fazla fazla mı alan ayırıyor önden ? Bu adam unreali açtı 20 gb kartı var o zaman 10 gb sini direkt alalım mı diyor ? 
4gb kartı olanında 2gb sini şak diye alıyor herhalde aynı mantıkla ?
Ama oyun oynanırken orada ki pool mu önemli ? Nereye bakmalıyız gerçek kullanım için ? İstenen pool mu kullanılacak günün sonunda ?  Mesela pool 700 benim sahnede. Dolayısıyla 1gb sine mi ihtiyaç duyulacak ? 
2gb önden alacak 1gb sahne yiyecek 4gb lik kartın 3gb si kullanılacak mı ?
 
Belki bildiğiniz şeylerde vardır ama neyi ne kadar bildiğinizi bilemediğim için ben bilmediğiniz ön kabulü ile anlatacağım.
1. Editor hiç bir şekilde bir ölçü değildir. Editor açıkken aldığın değerler oyunun değerlerini hiç bir şekilde yansıtmaz. Özellikle memory söz konusu olduğunda bu daha da önemlidir.
2. Paketlenmiş proje önemlidir. Editor ün zerre önemi yoktur. Paketlenmiş projede de bir çok çeşit var. Developement, Test, Shipping vb. Shipping senin müşteriye vereceğin versiyon olduğundan seni sadece o ilgilendirir. Shipping build de tüm yan sistemler çıkarılıp atıldığından ve bir sürü son optimizasyon yapıldığından "Test" diye bir şey var. Eğer hem shipping e yakın olsun ama bazı testleri de yapabileyim diyorsan kullanman için var. Development paketlerde performans analizi yapmak hiç önerilmez ama mecbur kaldığında Development built de bazı şeylerin nasıl olduğunu daha detaylı inceleyebilirsin. Bunun nedeni sizin analiz yapabilmeniz için bir çok şeyin development build den çıkartılmaması dır. Dolayısı ile problemin ne olduğunu Shipping ya da Test paketinde tespit yapman gerekiyor. Tespitini yaptıktan sonra araştırmaya diğerlerine kayarsın. Yani örneğin "shipping" te bakarsın. Benim oyunum "600 mb ram harcıyor bu çok fazla" yargısına varırsın. Orda analayamadıysan Test orada anlayamadıysan Development build e geçersin. Asla editor de bir şey test edilmez. Mecbur kalınmışsa Standalone olmasına dikkat edilir son çare olarak.
3. Neyin ne kadar memory yediği ile alakalı internette tonla kaynak var. Memory insights ta kullanıp direk görebilirsin. Sahne de ne olduğundan daha önemli şey sahnenin nasıl yapıldığıdır. Çok şey farkeder. Oradaki her karakterin ayrı ayrı textureları olduğuna neredeyse eminim mesela. Halbuki hepsi aynı. Üzerlerinde 6 şar texture olsa. Her biri 1 MB yapsa 20 karakter olsa sadece 120 mb sadece buların texture ları yapıyor. Halbuki normalde 6 MB lık bir setle bu 20 tanesini halledebilirsin. Shader da tint verirsin olur biter. Bak bir anda 20 kat düşürdüm texture memory ihtiyacını. Bunu diğer şeylere de uygularsan evet 20 kat daha performaslı bir şey elde edebilirsin. Yani gördüğünüz görüntüden çok altta ne yapılmış nasıl yapılmış bu önemlidir. 1024 tex kullanman gereken yerde 4048 tex kullanıyorsan, 8 bit RGB kullanman gereken yerde 32 bit kullanıyorsan mesela bak bir anda 4 kat arttı ihtiyacın. Duruma göre baktığında dışarıdan farkedemezsin bile 8 bit miş 32 bit miş.
4. Sorun şundan kaynaklanıyor. Bir yerlerden asset bulup levele direk koyuyorsunuz. Halbuki asset satanlar ürünleri satsın diye ve indirildiğinde problemsiz çalışsın diye bir sürü uygunsuz durum yaratırlar. Adam asset daha iyi gözüksün diye 4k texture la sunar (Alan kendi zevkine göre düşürebilir diye birazda. Adam bilemez sen close up yapacak mısın yapmayacak mısın). Base shader hazırlamaz mesela. O zaman indirdiğinde senin onu da kurman gerekebilir ve kuramazsın diye ya da dökümantasyonla uğraştırmamak için. Adamın ana fikri bunu indiren level e koysun direk çalışsın. Hiç bir zaman hiç bir asset oyuna hazır değildir. Her oyun farklıdır. Asset hazırlayanlar senin nasıl bir durumda assetini kullanacağını bilemez. LOD kurmaz mesela. gibi gibi.
5. Memmory insights, RenderDoc kullanmanızı, mip level, sıkıştırma formatları, HLOD, LOD, cull distances bunun gibi bir sürü şeyi öğrenmenizi tavsiye ederim eğer ram bu kadar önemli ise.
 
Tüm textureleri Bulk edip hepsini 512 ye kadar düşürdüm.
Shipping Build alıp steam üzerinde yayınladım
Sahnede hiçbir şey yok gördüğün gibi boş bir sahneyi de attım size. Ve her şekilde 4gb vramı şlak diye alıyor.
Bomboş default template simsiyah ekran 4gb vram tüketiyor. Bunu paketliyorum açıyorum ve yine 4 5 gb vram gittiğini görüyorum. Yani hiçbir şey yapmasanız bile boş bir şeyi paketleyip açın 5gb vram gittiğini göreceksiniz.
Bu sadece unrealde olmuyor. Steamı açın mesela o an 1500 vram varsa 2500 e çıkacak direkt. Ram mantığı ile fazladan alan mı ayırıyor max kapasitene göre ? Yani ihtiyacı olmasa bile sonradan olur diye arabelleğe mi alıyor yoksa direkt olarak kullanıyor mu ben bunu anlamadım.
 
VRAM'de aynı RAM gibi kapasiteye göre fazla veya az kullanılabilir, Tabiki aradaki fark RAM kadar olmayabilir. Ama bu oyundan oyuna, işte motordan motora veya yapılan işe göre değişir. Mesela alttaki testte görebilirsiniz, sadece birisi 8GB birisi 12GB olan RTX3060'lar test edildiğinde Horizon Zero Dawn'daki VRAM kullanım farki 2-2.5GB'lara çıkarken RDR2 ve Cyberpunkta kullanım neredeyse aynı. Sanırım bu kullanılan optimizasyon teknikleri, kullanılan motor gibi değişkenlere bağlı olabilir. Yani sadece bu test videolarına bakaraktan böyle olduğu anlaşılabilir.



Örnek Video;
Bu içeriği görmek için üçüncü parti çerezlerine izin vermeniz gerekli.
Daha fazla detay için çerezler sayfasını ziyaret edin.
 
Evet 12 GB olanda daha fazla kullanıyor çünkü zaten çok belleği var dolayısıyla ara belleğe almaktan çekinmiyor.
Bende 20 GB kart var 8gb yi direkt şak diye alıyor :D Ama eskiden 8 gb varken 4gb falan alıyordu. Karta göre değişiyor o işte VRAM miktarın fazlaysa fazla fazla alıyor demek ki. Yoksa sahneyi gösterdim ben fotoğraflarda istenilen pool belli. 300-500 mb bir şey istiyor. Toplamda 3GB yemesi lazım. Çünkü boş maptede denedim. Pakette aldım yine aynı. Ayrıca textureleri 512 yaptım yine aynı. Nanite kullanıyorum zaten. LOD sorunu yok fazla.
Sürükle bırak yapmadım yani tüm harita 30 fps veriyordu şimdi 80 veriyor. Optimizasyonunu yaptım haritanın. Lightların resolutionuna kadar kıstım her şeyi.