furkanxdgs4

Yeni üye
14 May 2016
153
9
0
Belirtilmemiş
Merhaba arkadaşlar. Son zamanlarda büyük yapımların grafiksel açıdan kat ettikleri yolu çoğumuz görüyoruz. PS4 gibi kısıtlı ve 2013 üretimi bir makinede Horizon: Zero Dawn, Battlefield 1 gibi oyunların grafik kaliteleri gerçekten PS4'e çıkan ilk oyunlara imrendiriyor kendini. Özellikle yeşillik kalitesi, CryTek'in başlattığı akımdan sonra çok fazla yol kat etti. Gözle görülen çoğu yerin çimen gibi küçük ve yoğun MESH'lerle sarılı olduğu bir ortamda PS3 bile 30FPS'te akıcı bir oyun deneyimi sunuyor. Ancak Epic Games'in sunduğu "Open World Demo Collection" paketindeki çimenleri alıp kendi haritalarımızda küçük ve yoğun bir şekilde yerleştirdiğimizde güçlü PC donanımlarımızda bile ciddi performans sorunları yaşıyoruz. Tabii ki büyük firmaların görsel kalitesine ulaşma gibi bir imkanımız neredeyse yok gibi, ancak elimizden gelenin en iyisini yaptığımızda bizim de kaliteli işler çıkarabileceğimizi düşünüyorum. Konunun teknik bölümüne girecek olursak:
Oyunlarımızda GPU'ların çizebilmesi için Mesh'lerimizin olabildiğince düşük poligonlu olması gerektiğini biliyorum. Ancak şöyle bir sorum var. Horizon: Zero Dawn'ı incelediğimde çimenlerin yüksek poligonlu (4-15) olduğunu düşünüyorum çünkü çimenlerin detayları gayet güzel bir seviyede. Ancak tabii ki Horizon: Zero'yu baz almak yanlış olur çünkü çevrenin genelini boş ve yeşillik kaplı alanlar doldurduğu için GPU'nun tüm gücünü yeşilliklere yatırmak mantıklı. Ancak Battlefield 1, Uncharted 4 (PS3'te Crysis 3) gibi çevre elementlerinin ve efektlerinin de yoğun olarak yaşandığı oyunlarda da haritadaki bina, araba ve eşya gibi Mesh'lerin üstünün bile yeşillik kaplı olması GPU'ya baya bir yük bindirmesi gerekirken yeşillik kaplı sahnelerde performans sorunu çekilmiyor. Ancak Battlefield 1 veya Crysis 3'te de çimenlerin 1-2 poligonlu olarak çizildiği aşikar çünkü AA (Anti-Aliasing) sorunları kendini belli ediyor. Ancak Uncharted 4'de etrafın hem VFX, hem bina gibi Mesh'ler, hem de türlü türlü yüksek poligonlu çimenlerle (Çünkü AA sorunu çekilmiyor) kaplı olmasına rağmen gayet akıcı bir oyun deneyimi sunuluyor. Bunun sebebi nedir? Neden bizim PC'de güçlü bir donanımımız olmasına rağmen PS4 kalitesine yaklaşamıyoruz hem de Unreal Engine 4 varken? Bu konu hakkında araştırmalarıma dayanarak iki fikrim var ancak doğru olup olmadıklarını bilmiyorum. 
1- Normal Map'ler ile düşük poligonu yüksek poligona çekmek: Genelde Maya gibi bir 3D modelleme programı ile düşük poligonlu bir Mesh'in yüksek detaylara sahip olması için Mesh'in ZBrush'a aktarılıp gereken şekilde modellendikten sonra Normal Map'lerle birlikte Maya'ya geri aktarılmasıyla oluşan bir performans getirisi varmış. Bunu çimenler üzerinde uygulayarak yüksek poligonlu gibi görünen düşük poligonlu Mesh'ler elde ettiklerini düşünüyorum. Ancak bu durumun nasıl gerçekleştiğini bir türlü anlamadım. Bu konu hakkında bir fikriniz varsa yorumlarınızı bekliyorum.
2- Gerçek zamanlı Mesh özelliklerinin hepsini kapatma: Bu fikri Uncharted 4'ün teknik detaylarına bakınırken buldum. Kısaca bahsetmek gerekirse Mesh'lerin gölgelerini, fiziklerini kapatıp yansımalarını ve uzak çizim mesafelerini aşırı derecede düşürerek sadece Mesh'in orda çizilmiş yani görünür bir şekilde durmasını sağlıyorlar. Sonrasında da materyalin kaliteli görünümü için gereken düzenlemeleri karakter pozisyonuna bağlı olarak değişmesi için materyallerle uğraşıyorlar. Uncharted 4'deki fiziksel olarak görünen çevre etkileşimlerini de aslında "Pivot based Vertex Shader" olarak bahsedilen karakterin konumuna bağlı olarak materyalin yön değiştirmesi şeklinde yapıyorlar. Zaten Unreal Engine'ın Learn kısmı üzerinde paylaşılan Content Examples projesinde de bu sistemden bahsediliyor ve gayet performans dostu bir sistem olduğu açık. 
Bu fikirlerim üzerine söylemek istediğiniz şeyleri merak ediyorum arkadaşlar. Akıl akıldan üstündür, birlikte bu konu üzerinde düşünürsek hepimiz için güzel sonuçları olacağını düşünüyorum.