En uygun doku boyutu nedir?


13

Kısa bir süre önce, projeme belirli bir miktarda dokuyu tek bir pakete koyacak bir doku paketleyicisi ekledim:

Paketlenmiş doku

Örneğin bu, 582x1023 piksel boyutundadır. Bu paketlenmiş dokuları eklemenin amacı açıkça performansı artırmaktı, bu yüzden OpenGL (LWJGL kullanarak) dokular için en uygun doku boyutunu aramak istedim. Bulduğum şeyler yaygın olarak desteklenen maksimum doku büyüklüğü göre, 1024x1024 gibi görünüyor vardı bu örneğin. Bu bana tuhaf geliyor çünkü belli ki çok fazla doku bundan daha büyük olacak, peki bunlara ne olacak? Çoğu grafik kartının bundan daha büyük dokuları desteklediğinden eminim. Çoğu grafik kartının örneğin 4096x4096 dokularını (veya belki de bundan daha büyük) işlemesini bekleyebilir miyim?

İkinci noktama gelmek için (umarım bu hala bir soru olarak sayılır, ancak aslında aynı konuya dayanır): Dokular 2 gücüne (256x256, 512x512, 1024x1024, 2048x2048, ..) göre boyutlandırılmalı ve gerekir Bundan daha küçük paketlenmiş dokuları 2'nin sonraki gücüne mi dolduruyorum? Göre bu soruya 2011 yılından bu bir gereklilik değildir ama performans ve önlemek küçük hata artırabilir ve bu bir 2012 yılından itibaren bu kesinlikle gerekir ped dokular söylüyor. Bu yüzden bu soruların daha önce sorulduğunu fark ettim, ancak cevapların değişmesi için makul bir şekilde tarihlendirildiler ve ayrıca her biri sorumu kısmen cevaplıyorlar. Diğer projeler / bunu nasıl ele alıyorlar?

TL; DR: Çoğu grafik kartının hangi doku boyutlarında işlem görmesini bekleyebilirim? En uygun doku boyutları nelerdir (ya da vardır)? Doku genişliğini 2'lik bir sonraki güce kadar doldurmalı mıyım?


4
GPU sadece 2 gücü ile ilgilenir. Dokularınızı manuel olarak doldurmazsanız, GPU (veya seçtiğiniz oyun motorunuz) bunu sizin için yapar, bu da doku başına çalışma zamanında hafif bir gecikmeye neden olabilir. Yine de maksimum / optimum doku boyutları hakkında herhangi bir yardım sunamıyorum.
ketura

@ketura Ah anlıyorum, teşekkürler. Diyelim ki 513x10 boyutlarında bir imajım var. 1024x1024'e doldurmak ve sonra tüm bu boş pikselleri aktarmak veya GPU'nun bunu yapmasına izin vermek daha hızlı olur mu?
flotothemoon

4
O kadar yükseğe çıkmana gerek yok. 1024 x 16 çalışır; KARE olmak zorunda değildir, her yöne sadece 2 güç. Bu durumda ciddi bir piksel yedek ve 512x16, aşağı alamadım düşünün.
ketura

Yanıtlar:


6

Buna cevap veriyorum, YMMV. Çoğu bilgisayarda kullanılabilen video RAM'in (VRAM) ne olduğunu belirlemek için Steam Donanım Anketi'ni ( http://store.steampowered.com/hwsurvey?platform=pc ) kullanıyorum. 2015-10-13 (bugün) sonuçlarına bakıldığında, insanların yaklaşık% 85'inde 1024 MB VRAM var.

Sorunuz çok geniş, çünkü hedef donanımı belirtmiyor (konsol, PC, avuçiçi, mobil cihazlar?) PC'ler hakkında konuşacağım ve donanım özelliklerine göre diğer platformlar için tahmin yapabilirsiniz.

Piksel başına 32 bit renk + alfa, yani piksel başına 4 bayp olduğu varsayıldığında, 1 GB VRAM en fazla ~ 256 milyon piksel tutabilir. Bu 256 1K x 1K dokular anlamına gelir. Bu, VRAM'nızda yalnızca dokuları tutmak istediğinizi (yanlış) varsayarken, yer bırakmanız gereken başka birçok şey (örneğin, 3B'de çalışıyorsanız mesh verileri) olacaktır. Muhtemelen dokuların mip-haritalaması için biraz daha fazla alana izin vermek istersiniz, bu da genellikle dokularınız iki güçlüyse en iyi sonucu verir.

Modern konsollar (XBOX One ve PS4) 4-8 GB birleşik RAM'e sahiptir, çoğu avuçiçi cihaz ve mobil cihazda 1-2 GB birleşik RAM vardır ve VRAM olarak ne kadar ayırabileceğiniz konusunda kısıtlamalar vardır.

Çoğu bilgisayarda çalışacak şekilde 2K dokular oluştururdum, böylece alt uç cihazlar için ölçeklendirme seçeneğine izin veririm. Bir 2D oyun yazıyorsanız ve daha yüksek çözünürlüklü ekranları (4K, retina iPad, vb.) Hedeflemek istiyorsanız, arka plan için 4K dokular kullanabilirsiniz, ancak diğer birçok parça için bu aşırı olabilir.

Umarım bu yardımcı oldu ve suları çamurlu değildi.


Cevabınız için teşekkürler, kesinlikle yardımcı olur. Genişliğe gelince, bunun için üzgünüm, bazı detayları eklemeyi unuttum: 2D bilgisayarlar için geliştiriyorum. Desteklenen maksimum doku boyutundan daha büyük dokular kullanırsanız ne olur? Hiç çalışmıyor mu yoksa yavaşlıyor mu?
flotothemoon

1
Cevabım yerinde görünüyordu. Diğer site forum yayınlarını kontrol etmek, oyunun çoğu cihazda çalışması için desteklemeniz gereken 2k dokulardır. Doku boyutu sınırı belirli donanıma ve belirli OpenGL-ES sürümüne bağlıdır. Belirli hata mesajının ne olacağından emin değilim, ancak dokuyu yüklemeye çalıştığınızda OpenGL-ES'den gelecektir. Faydalı linkler: answers.unity3d.com/questions/563094/... , forum.unity3d.com/threads/texture-sizes-and-videocards.281422 ve feedback.wildfiregames.com/report/opengl/feature/...
Vijay Varadan

Dokuyu yüklemeye veya bağlamaya çalıştığımda? Yoksa burada da aynı şey mi var?
flotothemoon
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.