Android oyununuzdaki dokuların görünümünü ve performansını optimize etmek için bu en iyi uygulamaları izleyin.
Dokular, 3D sanatınızın temel öğeleridir. En çok sayıda cihazda iyi çalışan 3D oyunlar, grafik işlemcilerden en iyi şekilde yararlanmak için tasarlanmış 3D çizimlerle başlar. Bu kılavuzda, oyununuzun daha iyi performans göstermesini sağlamak ve yüksek görsel kaliteyi korurken güç tüketimini en aza indirmek için mobilde dokularla ilgili optimizasyonlar ve en iyi uygulamalar vurgulanmaktadır.
Doku Atlasları Oluşturma
Doku atlas, 3D örgüler veya 2D sprite görseller gibi birden çok grafik nesnenin görüntü verilerini içerecek şekilde tasarlanmış bir dokudur. Her nesnenin kendi dokusuna sahip olması yerine, her nesnedeki resimleri birleştirmek için bir atlas dokusu kullanılır.
Bir oyun çerçevesinin çizim çağrılarının sayısını en aza indirmek, optimum oluşturma performansına ulaşma açısından önemli bir unsurdur. Farklı nesneler için aynı dokuyu kullanmak, bunları tek bir çizim çağrısında birleştirmeyi sağlayan faktörlerden biridir. Her çizim çağrısı grafik sürücüsü tarafından işlenirken CPU ek yüküne yol açtığından, çekme çağrılarını azaltmak özellikle CPU'ya bağlı oyunlar için önemlidir. Doku atlasaları, oyununuzun çalışma zamanı verilerindeki doku öğesi dosyalarının sayısını da azaltır. Yüzler, hatta binlerce doku, çok daha küçük sayıda doku atlas dosyası halinde birleştirilebilir.
Doku atlas düzeninizi 3D örgüler oluştururken planlamalısınız. Atlas, örgü öğesi yapılmadan önce yazılmışsa örgü öğesinin, doku atlastan sonra UV sarmalaması açılmış olmalıdır. Atlas yazıldıktan sonra, boyama yazılımında birleştirme veya atlas oluşturma araçları kullanılarak oluşturulursa, UV adasının dokuya göre yeniden düzenlenmesi gerekir.
Motora özel çizim çağrısı toplu işlemleri
Unity oyun motoru, nesneleri otomatik olarak birleştirebilen bir çağrıyı toplu olarak çizme özelliğine sahiptir. Nesnelerin otomatik toplu düzenlemeye uygun olması için dokular dahil olmak üzere ortak bir malzemeyi paylaşması ve statik olarak işaretlenmesi gerekir.
Unreal Engine 4, toplu işlem için manuel kurulum gerektirir. Nesneleri Unreal'e aktarmadan önce 3D yazılımda birleştirebilirsiniz. Unreal, örgüleri birleştirip doku atlas dosyaları oluşturabilen UE4 Aktör Birleştirme aracını da içerir.
Mipmaps oluştur
Mipmaps, bir dokunun daha düşük çözünürlüklü sürümleridir. Belirli bir doku için oluşturulan mipmap koleksiyonu mipmap zinciri olarak adlandırılır. Bir zincirde takip eden her mipmap düzeyi, önceki seviyeden daha düşük bir çözünürlüğe sahiptir. Mipmaps, oluşturma sırasında doku LOD'sini (ayrıntı düzeyi) uygulamak için kullanılır. Kısılmış bir doku bir doku sahnesine bağlandığında, grafik donanımı bir parçanın kapladığı doku alanını kullanarak mipmap zincirinden bir seviye seçer. 3D sahne oluştururken kameradan daha uzaktaki bir nesne, kameraya yakın olan aynı nesneden daha düşük çözünürlüklü bir mipmap kullanır.
Küçültülmüş bir doku, mipmapp'a aktarılmamış bir dokuya kıyasla daha fazla bellek kullanır. Ek mipmap düzeyleri, bir dokunun bellek ayak izini %33 artırır. Bir doku kameradan sabit bir uzaklıkta çizilirse mipmaps oluşturmak gereksiz bir bellek kullanımıdır.
Mipmaps'in doğru şekilde kullanılması GPU performansını iyileştirir. Düşük çözünürlüklü mipmap düzeylerinin kullanılabilirliği, bellek bant genişliği kullanımını azaltır ve doku önbellek yerleşimini iyileştirir.
Mipmapping, doku örtüşmesini azaltarak görsel kaliteyi de artırabilir. Doku yumuşatma, kameradan daha uzaktaki alanlarda bir titreme efekti olarak görülebilir.
Motora özgü mipmap ayrıntıları
Unreal Engine 4'ün, mipmapping kullanmak için ikinin kuvveti olan doku boyutları (ör. 512x1024, 128x128) gerekir. Doku boyutlarının biri veya her ikisi de ikinin kuvveti değilse Mipmap zincirleri oluşturulmaz.
Unity motoru, mipmaps oluşturmak için ikinin kuvveti olmayan boyutlara sahip dokuları otomatik olarak ölçeklendirir. Bu ölçeklendirmeyi önlemek için kaynak doku dosyalarınızın iki boyutta olduğundan emin olun.
Uygun doku filtreleme modlarını seçin
Doku filtreleme, oluşturulan bir üçgenin görsel görünümünü etkileyen bir donanım oluşturma özelliğidir. Doku filtrelemenin doğru kullanımı bir sahnenin görsel kalitesini iyileştirebilir. Birden fazla doku filtreleme modu vardır. Bunların her birinin, oluşturma iyileştirmesi ve maliyet arasında farklı bir dengesi bulunur. Maliyet, hem işlem süresini hem de bellek bant genişliğini içerir. Yaygın olarak kullanılan üç doku filtreleme modu şunlardır: en yakın (veya nokta), iki doğrusal ve üç doğrusal. Anisotropik, iki doğrusal veya üç doğrusal filtrelemeyle birleştirilebilecek ek bir doku filtreleme yöntemidir.
En yakın
En yakın, en basit ve en ucuz doku filtreleme modudur. En yakın, kaynak dokuda belirtilen koordinatları kullanarak tek bir tekseli örnekler. En yakın renkle oluşturulan üçgenler, özellikle kameraya yakın oluşturulduklarında blok halinde veya pikselleştirilmiş bir görünüme sahiptir.
Çift doğrusal
İki doğrusal filtreleme, kaynak dokuda belirtilen koordinatların çevresindeki dört e-postadan örnek alır. Parçanın doku rengini belirlemek için bu dört metnin ortalaması alınır. Çift doğrusal filtreleme, pikseller arasında daha yumuşak bir gradyanla sonuçlanarak en yakın filtrelemenin blok halinde görünümü ortadan kalkar. Kameraya yakın şekilde oluşturulan üçgenler piksellenmiş değil, bulanık görünür. Ek tekel numuneleri ve ortalama nedeniyle çift doğrusal, en yakın maliyetten daha fazla maliyetlidir.
Üç doğrusal
Köşelerin kameraya olan mesafesinin değiştiği bir ağ oluşturduğunuzda, oluşturma sırasında birden fazla mipmap seviyesi seçilebilir. İki mipmap seviyesi arasındaki değişiklikler, geçiş noktasında fark edilir düzeyde keskin bir geçişe neden olabilir. Üçlü doğrusal filtreleme, iki farklı mipmap düzeyinde ikili doğrusal filtreleme gerçekleştirerek ve sonuçların interpolasyonunu yaparak bu geçişleri yumuşatır. Birden fazla mip seviyesi ve interpolasyon kullanımı, üç doğrusal çizgiyi hesaplama açısından bilineer'e kıyasla daha pahalı hale getirir.
Anisotropik
Anisotropik filtreleme, kameraya göre aşırı bir açıyla oluşturulan dokulu örgülerin görsel kalitesini artırır. Yer düzlemi, bu tür bir örgünün yaygın örneğidir. Anisotropik filtrelemenin çalışması için mipmapped dokular gerekir. Oluşturma sırasında uygulanan anisotropik filtrelemenin oranı veya seviyesi yapılandırılabilir. Seviye yükseldikçe anisotropik filtrelemenin maliyeti de artar.
Mod seçme stratejisi
Çift doğrusal filtreleme, genellikle performans ile görsel kalite arasındaki en iyi dengeyi oluşturur. Tridoğrusal filtreleme, çok daha fazla bellek bant genişliği gerektirir ve seçmeli olarak kullanılmalıdır. Çoğu durumda, 2x anisotropik filtrelemeyle birlikte kullanılan çift doğrusal filtreleme, 1x anisotropik filtrelemeyle birlikte kullanılan üçlü doğrusal filtrelemeden daha iyi görünür ve performans gösterir. Anisotropik seviyeleri 2 katın üzerine çıkarmak son derece maliyetli bir işlemdir ve kritik oyun öğeleri için seçici bir şekilde yapılmalıdır.
Doku filtreleme, toplam GPU enerji tüketiminin yarısına kadarını oluşturabilir. Mümkün olduğunda daha basit doku filtreleri seçmek, oyununuzun güç taleplerini azaltmanın mükemmel bir yoludur.
Doku boyutlarını optimize edin
İstediğiniz resim kalitesini sağlamaya devam ederken doku boyutlarının mümkün olduğunca küçük olduğundan emin olun. Hatalı şekilde büyük dokular olup olmadığını kontrol etmek için doku öğelerinizi inceleyin. Bu ilke hem ayrı hem de atlas dokular için geçerlidir. Oyununuz, çok çeşitli çözünürlük ve performans özellikleri sunan çok sayıda cihazı destekliyorsa uygun cihaz sınıfı için doku öğelerinizin düşük ve yüksek çözünürlüklü sürümlerini oluşturmayı düşünün.
Malzemesinde birden fazla doku kullanan bir örgü oluştururken, bazı dokuların çözünürlüğünü seçerek azaltmayı göz önünde bulundurun. Örneğin, 1024x1024'te yaygın bir doku kullanıldığında, pürüzlülüğün veya metalik harita dokusunun 512x512'ye düşürülmesi, resim kalitesine çok az bir etki ile mümkün olabilir. İstenen kalite seviyesinden ödün vermemek için bu tür tüm yeniden boyutlandırma denemelerinin etkisini doğrulayın.
Uygun renk alanını kullanın
Doku yazma için kullanılan birçok yazılım paketi, sRGB renk alanı içinde çalışır ve dışa aktarır. Renk olarak işlenen dağılmış dokular sRGB renk alanı kullanabilir. Renk olarak işlenmeyen dokular (ör. metalik, pürüzlülük veya normal haritalar) sRGB renk alanında dışa aktarılmamalıdır.
Oyun motoru doku ayarları, bir dokunun sRGB renk alanı kullanıp kullanmayacağını belirten bir parametre içerir.
Bu tür dokuların piksel verileri renk verisi olarak kullanılmadığından, sRGB renk alanının kullanılması hatalı görseller üretir.
Doku sıkıştırmayı kullan
Doku sıkıştırma, oluşturma sırasında grafik donanımı tarafından hızlı bir şekilde sıkıştırılabilen bir dokuyla sonuçlanan sıkıştırılmamış piksel verilerine uygulanan bir resim sıkıştırma algoritmasıdır. Doku sıkıştırmanın etkili kullanımı, görsel kaliteyi minimum düzeyde etkileyerek bellek kullanımını azaltabilir ve performansı artırabilir. Android'de en yaygın olarak kullanılan üç doku sıkıştırma algoritması: ETC1, ETC2 ve ASTC. Modern oyunlarda ASTC genellikle en iyi birincil seçenektir. Oyununuz ASTC'yi desteklemeyen cihazları hedefliyorsa ETC2 yedek seçenektir.
VT1
ETC1, tüm Android cihazlar tarafından desteklenir. ETC1, yalnızca RGB renk verilerinin piksel başına dört bit modunu destekler. ETC1, alfa kanallarını desteklemez. ETC1'i destekleyen birçok oyun motoru, alfa kanalı verilerini temsil etmek için ikinci bir ETC1 dokusunun tanımlanmasına izin verir.
ETC2
Etkin Android cihazların% 90'ından fazlası ETC2'yi destekler. OpenGL ES 3.0 API'yi desteklemeyen çok eski cihazlar ETC2'yi kullanamaz. ETC1 ile karşılaştırıldığında ETC2 şunları ekler:
- Alfa kanalı desteği, hem sekiz bit hem de tek bitlik "delil"
- RGB ve RGBA dokularının sRGB sürümleri
- Bir ve iki kanal, R11 ve RG11, dokular
ASTC
ASTC, etkin Android cihazların% 75'inden fazlası tarafından desteklenir. ASTC, belirli bir doku için sıkıştırma oranını resim kalitesiyle dengelemek üzere ayrıntılı kontrol olanağı sunan, yapılandırılabilir sıkıştırma bloğu boyutlarına sahiptir. ASTC, genellikle ETC2 ile aynı bellek boyutunda veya ETC2'den daha küçük bir bellek boyutunda benzer miktarda üstün kalite elde edebilir.
Doku sıkıştırma hızı
Oyununuzda çok fazla doku varsa doku sıkıştırma uzun sürebilir. Hem ETC hem de ASTC seçilebilir sıkıştırma kalitesi ayarlarına sahiptir. Yüksek kaliteli ayarların sıkıştırılması için daha fazla zaman gerekir. Geliştirme sırasında, önemli derlemeler oluşturmadan önce sıkıştırma süresini azaltmak ve kalite seviyesini artırmak için kalite seviyesini düşürmek isteyebilirsiniz.
Oyun motorlarında doku sıkıştırma
Oyun motoru kullanıyorsanız doku sıkıştırma biçiminizi (ETC veya ASTC) proje düzeyinde seçmeniz gerekebilir. Maksimum uyumluluk amacıyla birden fazla sıkıştırma biçimini desteklemek için ek çalışma gerekebilir. Google Play Asset Delivery'nin Doku Sıkıştırma Biçimi Hedefleme özelliği, oyununuza birden fazla biçimi dahil etmenize ve yükleme sırasında tek bir cihaza sadece en uygun biçimi sunmanıza yardımcı olabilir.
UV'lerin sarmalamasını açma
UV adasını mümkün olduğunca düz tutun. Bu, dokunuzun aşağıdaki şekillerde yapılmasına yardımcı olur:
- UV adalarını paketlemek daha kolaydır ve alan israfını azaltır.
- Düz UV'ler, dokular üzerindeki "merdiven etkisini" azaltır.
- İyi UV paketlemesi, dokudan optimum çözünürlük elde etmenizi sağlar.
- UV'ler düzleştirme sırasında biraz bozulmuş olsa bile daha kaliteli dokulandırma.
Bir modelin üzerinde görünen doku dikişleri kötü görünüyor. UV ek yerlerini daha az görünen yerlere yerleştirmeye çalışın. Daha iyi normal haritalar oluşturmaya yardımcı olmak için, UV adanızı kenarlarının keskin olduğu olacak şekilde bölün ve adanın etrafında biraz alan bırakın.
Anlaşılmaz ayrıntılardan kaçının
Sanat eseri oluştururken, özellikle küçük ekranlı cihazlar için tasarlanmış oyunlarda görünmeyen ayrıntılar eklemeyin. 4096x4096 piksellik karmaşık bir doku oluşturmak, odanın köşesinde neredeyse zor görünmeyen küçük bir sandalye modeli için boşa harcanıyor. Bazı durumlarda, şekil algısını iyileştirmek için kenarları abartmanız (ekstra vurgular eklemeniz) ve gölgelendirmeniz gerekebilir.
Fırında ayrıntılar
Mobil cihazların ekranları, kişisel bilgisayarlara veya oyun konsollarına kıyasla daha küçük ekranlara ve daha az güçlü grafik donanımlarına sahiptir. Ortam tıkanıklığı veya çalışma zamanında parlaklık vurgulama gibi efektleri hesaplamak yerine, bunları mümkün olduğunda dağınık dokuda "pişirmeyi" düşünün. Bu, performansa yardımcı olur ve bilgilerinizin görünür olmasını sağlar.
Renk tonu kullanma
Özel gölgelendiriciler oluşturabiliyorsanız ve benzer veya tek tip renk şemasına sahip örgüleriniz varsa uygun örgülerde renk tonlaması kullanabilirsiniz. Renk tonlaması kullanıldığında RGB dokusundan daha az doku belleği kullanan gri tonlamalı bir doku kullanılır. Örgüyü renklendirmek için tepe noktası başına renk verileri gölgelendirici tarafından uygulanır. Alternatif bir renklendirme yöntemi de RGB maskesi kullanıp dokuyu maskenin renk aralığına göre uygulamaktır.
Doku kanallarını paketle
Birden çok dokuya sahip malzemeleri oluştururken, yalnızca tek bir renk kanalı kullanan dokuları üç renk kanalının tümünü kullanan tek bir doku halinde birleştirme fırsatlarını arayın. Bu, bellek kullanımını ve parça gölgelendirici tarafından gerçekleştirilen doku örnekleyici işlemlerinin sayısını azaltır.
Paketleme yaparken en ayrıntılı verileri yeşil kanala atayın. İnsan gözü yeşillere karşı daha duyarlı olduğundan, grafik donanımı genellikle yeşil kanala daha fazla bit atar. Örneğin, pürüzlülük/düzgünlük haritası genellikle metalik bir haritadan daha fazla ayrıntıya sahiptir ve yeşil kanala atamak için daha iyi bir seçimdir.
Alfa kanalı kullanan malzemelerde, paketlenmiş dokunuzda yalnızca iki kanal kullanıyorsanız alfa kanalı verilerini dağınık doku yerine paketlenmiş dokunuza yerleştirmeyi düşünün. Bu, dağılmış dokunun biçimine bağlı olarak, boyutunu küçültmenize veya alfa kanalı verilerini çıkararak görsel kalitesini artırmanıza yardımcı olabilir.
Paketlenmiş dokularınızın sRGB yerine doğrusal bir RGB renk alanına ayarlandığından emin olun.
Normal haritalar oluşturun
Normal haritalama, 3D modele ek geometri kullanmadan ayrıntı görünümü veren bir tekniktir. Modellenmesi için çok sayıda üçgen gerektirebilecek kırışıklıklar veya vidalar gibi özellikler, normal bir harita kullanılarak simüle edilebilir. Normal haritalama, oyunun sanat stiline ve yönüne bağlı olarak uygun olabilir veya olmayabilir.
Normal haritalar bir miktar performans maliyetine neden olur ve alt segment cihazlarda dikkatli bir şekilde kullanılmalıdır. Normal harita için ek bir doku gerekir. Bu da, ek doku örneklemesi ve parça gölgelendirici hesaplamaları yapılmasını sağlar.
Normal harita için en iyi uygulamalar
Aşağıda normal harita oluşturmaya yönelik en iyi uygulamalardan bazıları verilmiştir:
Kafes kullan
Kafes, düşük çokgen modelinizin daha büyük veya dışarı itilmiş bir sürümüdür. Normal harita oluştururken iyi çalışabilmesi için yüksek çokgen modeli kapsamalıdır. Kafes, normal harita oluşturma sırasında raycast mesafesini sınırlandırmak için kullanılır ve normal harita üzerinde normal ek yerlerinin bölünmesi ile ilgili sorunları önlemeye yardımcı olur.
Örgü adına göre fırında eşleştirme
Fırınlama yazılımınız destekliyorsa, örgü adına göre eşleştirme yapın. Bu özellik, yanlış normal harita projeksiyonu sorununu azaltır. Nesneler birbirine çok yakın olduğunda, normal haritalarını beklenmedik bir şekilde yanlış yüze yansıtabilirler. Örgü adına göre eşleştirme, fırınlama işleminin yalnızca doğru yüzeyde yapılmasını sağlar. Substance Painter'daki bu özellik hakkında daha fazla bilgi için bu sayfaya bakın. Marmoset Araç Çantası'ndaki bu özellikle ilgili daha fazla bilgi için bu sayfaya bakın.
Ağı patlat
Pişirirken örgü adıyla eşleştiremiyorsanız örgü adını patlatabilirsiniz. Örgünüzü patlattığınızda parçalar birbirinden uzaklaştırılır, böylece normal harita yanlış yüzeye yansıtılmaz. Ortamı kaplayan bir yemekler de yapıyorsanız bu fırını bir parçasıyla ayrı ayrı pişirmeniz gerekebilir.
Ek yerlerini en aza indirin
Sert kenarlarda kesintisiz UV, bu etkiyi en aza indirmek için görünür ek yerlerine neden olur ve sert kenarlarda UV'yi bölmenize neden olur. Yumuşatma gruplarını ayarlarken genel kural olarak açıyı 90 dereceden az tutun. UV ek yerlerinin üçgenlerde farklı bir yumuşatma grubunun olması gerekir.