Malzemeler ve Gölgelendiriciler

Android oyununuzda malzemelerin ve gölgelendiricilerin kullanımını optimize etmek için buradaki en iyi uygulamaları izleyin.

Malzemeler ve gölgelendiriciler, modern 3D sanatının temel yapı taşlarıdır. En fazla sayıda cihazda iyi çalışan 3D oyunlar, grafik işlemcilerden en iyi şekilde yararlanmak üzere tasarlanmış 3D çizimlerle başlar. Bu kılavuzda, oyununuzun daha iyi performans göstermesini ve güç tüketimini en aza indirmesini sağlamak için mobil cihazlarda malzeme ve gölgelendiricilere yönelik optimizasyonlar ve en iyi uygulamalar vurgulanmaktadır.

Bu makalenin bazı bölümleri, Arm Limited tarafından katkıda bulunulan ve telif hakkı ile korunan çalışmalara dayanmaktadır.

Oyun motoru mobil uyumlu gölgelendiriciler

Oyun motorları, malzemeleri ve gölgelendiricileri ilişkilendirme şekli bakımından farklılık gösterir. Unity motoru birden fazla gölgelendirici oluşturabilir ancak her malzemeye yalnızca tek bir gölgelendirici atanabilir. Unreal Engine 4, hedef platforma bağlı olarak bir malzemeye farklı gölgelendiriciler uygulayabilir.

Gölgelendiricilerin ve malzemelerin tanımı için Sanatçılar için materyal ve gölgelendirici en iyi uygulamalar bölümüne bakın.

Unity veya Unreal Engine 4 gibi bir oyun motoru kullanıyorsanız mobil donanım için tasarlanmış yerleşik gölgelendiricileri kullanın. Bu gölgelendiriciler, mobil cihazlarda daha yüksek performans için basitleştirilmiş özellik uygulamaları içerir. Mümkünse malzemelerinizi yapılandırırken kullanmadığınız özellikleri kapatın. Bu özellikler renk tonulama veya ayrıntı haritaları olabilir. Kullanılmayan özelliklerin devre dışı bırakılması, motorun bunları nihai gölgelendirici programından çıkarmasına olanak tanır ve böylece daha iyi bir performans elde edilir.

Birlik

Unity birden fazla oluşturma motoru içerir. Modern mobil oyunlar için en iyi seçenek Evrensel Oluşturma Ardışık Düzeni (URP)'dir. URP, hedef platforma bağlı olarak karmaşıklığı otomatik olarak ölçeklendiren standart bir gölgelendirici seti içerir. Eski Unity oluşturucu, mobil platformlar için tasarlanmış bir gölgelendirici koleksiyonu içerir. Bu gölgelendiriciler Mobil kategorisinde gruplandırılır.

Unreal Motor 4

Unreal motoru, seçilen hedef platforma göre bir mobil gölgelendirici seçer. Mobil gölgelendiricilerden elde edilen görsel çıkış, varsayılan Gölgelendirici Model 5 gölgelendiricilerden farklı olabilir. Mobil gölgelendiricilerin oluşturma çıktısını simüle etmek için Unreal düzenleyicide Önizleme Oluşturma Düzeyi'ni değiştirebilirsiniz. Bazı farklılıklara rağmen Unreal, tüm platformlardaki materyaller için aynı süreci kullandığından mobil gölgelendiriciler genellikle varsayılan gölgelendiricilerle benzer görsellere ve davranışlara sahip olur.

Gerçek dışı düzenleyicide mobil önizleme oluşturmayı ayarlama
Şekil 1. Gerçek dışı düzenleyicide mobil önizleme oluşturmayı ayarlama.

Doku örnekleyicileri en aza indir

Mobil cihazları hedefleyen oyunlar, malzemelerinde mümkün olan en az dokuyu kullanmalıdır. Eklenen her doku, bellek bant genişliğini tüketen ve güç tüketimini artıran ek doku örneklemesi gerektirir. Unreal Engine 4, mobil cihazlarda çalışırken en fazla beş malzeme dokusu önerir. Beş doku örnekleyici bile birçok cihazda yaygın kullanım için aşırı derecede pahalı olabilir. Doku örnekleyici sayısını en aza indirecek stratejiler şunlardır:

  • Tek kanallı dokuları birleştirmek için doku paketlemeyi kullanın. Bu teknik hakkında daha fazla bilgi için Dokular kılavuzuna bakın.
  • Pürüzlülük veya metalik gibi parametrelerle ilgili verileri bir dokudan okumak yerine sayısal bir sabitle değiştirin.
  • Daha karmaşık ışık modellerinde ışık hesaplamalarını desteklemek üzere gereken dokuları atlayabilmek için ışık almayan gölgelendiriciler veya basit bir ışık modeli kullanın.

Mümkün olduğunda ışıklandırmayı devre dışı bırak

Işık ve ışıklandırma, gölgelendiriciler ve malzemeler arasında yaygın bir ayrımdır. Gerçek zamanlı ışıklandırma, gölgelendiricide ek hesaplamaları içerir. Uygulanan aydınlatma sisteminin türüne bağlı olarak, daha fazla bellek alanı ve bant genişliği kullanan malzeme dokuları gerekebilir. Özellikle daha az güçlü donanımları hedefleyen mobil oyunlarda, gerçek zamanlı ışık kullanımını en aza indirmek, optimum performans elde etmek açısından önemlidir. Sanat yönünüzü, stilize veya çizgi film karakterleri gibi gerçek zamanlı ışıklandırma olmadan iyi sonuç veren tasarımlar etrafında tasarlamayı düşünmelisiniz.

Işıklı ve ışıksız işlenmiş bir modelin karşılaştırması
Şekil 2. Gerçek zamanlı ışıklandırmayla (solda) ve gerçek zamanlı ışıklandırma olmadan (sağda) oluşturulan bir model örneği.

Şeffaflık kullanımını en aza indirin

Mümkün olan yerlerde opak malzemeler kullanın. Bir nesneyi şeffaflıkla oluşturmak, her zaman eşdeğer opak bir nesneden daha pahalıdır. Mobil grafik donanımının tasarımı, şeffaflığı bilgisayar veya oyun konsolu grafik donanımına göre oluşturmak için nispeten daha pahalıdır. Oyununuzda çok sayıda şeffaf nesne çizmek, özellikle de birbirlerinin üzerine yerleştirildiğinde performansı olumsuz etkiler.

Aynı pikselin üzerinde birden çok kez çizim yapmak, fazla çizim olarak bilinen bir sorundur. Birden fazla şeffaflık katmanından fazla çizim yapmaktan kaçınılmalıdır. Birçok oyunda fazla çizimi görselleştirip bu durumun tespit edilmesine ve ortadan kaldırılmasına yardımcı olan teşhis araçları bulunur. Oyununuzun performansını artırmak ve kare hızınızı düşüren sorunlu alanları belirlemek için bu araçları kullanın.

Unity düzenleyicisindeki fazladan çizim görselleştirme aracı örneği
Şekil 3. Unity düzenleyicideki fazla çizim görselleştirme aracı örneği.
Unreal düzenleyicideki fazladan çizim görselleştirme aracı örneği
Şekil 4. Unreal düzenleyicide fazla çizim görselleştirme aracı örneği.

Uygun alfa yöntemini kullanın

Şeffaflık uygulamanın en yaygın yöntemleri alfa karıştırma ve alfa testidir.

Alfa testi, nesne malzemesinin% 100 opak veya %100 şeffaf görünmesini sağlar. Bu son sipariş değeri için alfa değeri eşiğini yapılandırabilirsiniz. Unity'de bu şeffaflık türüne Cutout denir. Unreal Engine 4'te buna Maskeli harmanlama modu denir.

Alfa karıştırma, nesne malzemesinin belirli bir saydamlığa sahip olmasını sağlar ve nesnenin kısmen şeffaf görünmesini sağlayabilir. Unity bu şeffaflık türünü Şeffaf olarak adlandırır. Unreal Engine 4'te buna Saydam harmanlama modu adı verilir.

Alfa karıştırma ve alfa testi arasındaki karşılaştırma
Şekil 5. Alfa harmanlama (ortada) ve alfa testi (sağ) kullanılarak oluşturulmuş örnek bir resim (solda).

Alfa karıştırma, genellikle alfa testinden daha üstün bir görsel görünümle sonuçlanır. Ancak yaprak dökülmesi gibi belirli örgü türleri için alfa karıştırma, ağ hareket halinde görüntülendiğinde tuhaf görünebilir. Bu durum, yaprakların ve dalların yanlış sırada oluşturulduğu algısından kaynaklanır. Alfa testi, yapraklar ve dallarda artan örtüşme ve keskin kenarlar pahasına bu etkiyi en aza indirir.

Alfa karıştırma ve alfa testinin aynı ağı oluşturmak için farklı bir süre gerekebilir. Her iki modun da kabul edilebilir görsel çıkış sağladığı örgüler için, bir yöntemin diğerinden daha iyi performans gösterip göstermediğini karşılaştırmak üzere karşılaştırma yapmanız gerekir.

Profil gölgelendiricisinin karmaşıklığı

Doku örnekleyiciler, ışık ve şeffaflık gibi oluşturma özellikleri gölgelendiricinin karmaşıklığını artırır ve oluşturma performansını düşürür. Gölgelendiricinin karmaşıklığını değerlendirmek için oyun motorlarında bulunan araçları ve harici grafik araçlarını kullanabilirsiniz.

Unreal Engine 4, sahnenizdeki nesneler için maliyet tahminleri sağlayan bir Gölgelendirici Karmaşıklığı görünüm modu içerir.

Gerçek dışı düzenleyicide Gölgelendirici Karmaşıklığı görünüm modu
Şekil 6. Gerçek dışı düzenleyicide Gölge Karmaşıklığı görünüm modu.

Ayrıca, oluşturduğunuz malzemenin maliyetini profillemek için Unreal'in Malzeme İstatistikleri özelliğini de kullanabilirsiniz.

Gerçek dışı düzenleyicide Materyal İstatistikleri gösteriliyor
Şekil 7. Materyal İstatistikleri, Gerçek dışı düzenleyicide gösteriliyor.

Köşe gölgelendiricide hesaplama

Oluşturma gölgelendirici hesaplamaları, genellikle bir köşe gölgelendiricisi ile bir parça (piksel olarak da bilinir) gölgelendiricisi arasında bölünür. Oluşturulan parça sayısı genellikle köşe noktası sayısından büyük olur. Köşe gölgelendiricide pahalı bir hesaplama gerçekleştirilebiliyorsa bu işlem, parça gölgelendiricide yapılan işleme göre daha az yürütülür.

Bununla birlikte, bu veriler parça gölgelendirici tarafından tüketilirse köşe gölgelendiriciden iletilmelidir. Aktarılan veri miktarı çok büyükse hesaplamaları parça gölgelendiricide gerçekleştirmek daha yüksek performans sağlayabilir. Bir dizi hesaplama için en uygun gölgelendirici konumunu belirlemek amacıyla satıcı kullanımını değerlendirmek için profil oluşturma araçlarını kullanabilirsiniz. Unreal Engine 4, bu profil çıkarmaya yardımcı olabilecek Özelleştirilmiş bir UV'ler özelliğine sahiptir.

Pahalı matematik işlemlerinden kaçının

Gölgelendirici programlarında, gölgelendirici çıktısının davranışını ve görünümünü kontrol etmek için matematik işlemleri kullanılır. Yaygın işlemler arasında temel aritmetik, kuvvet, taban, logaritma vb. yer alır. Matematik işlemleri, hesaplama maliyetlerine eşit değildir. Pahalı işlemlerle dolu bir gölgelendirici, özellikle eski cihazlarda daha yavaş çalışır. Nispeten ucuz işlemlere örnek olarak şunlar verilebilir:

  • Ekleme
  • Çıkarma
  • Çarpma

Daha pahalı işlemler şunlardır:

  • Bölüm
  • Transandantallar (sin, cos, kuvvet, log, tan)

Profil performansı sıklıkla

Performans sorunlarınız her zaman bariz olmayabilir. Sorunlu alanlarınızın nerede olduğunu varsaymaktan kaçının ve oluşturma performansınızı değerlendirmek için profil oluşturma araçlarını kullanın. Etkisini doğru bir şekilde ölçmek için herhangi bir optimizasyonla testlerin öncesinde ve sonrasında mutlaka yapın.