2 gücünde olmayan dokular kullanmalı mıyım?


40

OpenGL ve DirectX'in ilk günlerinde, doku boyutlarının ikisinin gücü olması gerekiyordu. Bu, şamandıra değerlerinin enterpolasyonu, kaydırma ve benzeri kullanılarak çok hızlı bir şekilde yapılabileceği anlamına geliyordu.

OpenGL 2.0'dan bu yana (ve bundan önce, bir uzatma yoluyla) iki güç olmayan doku boyutları desteklenmiştir.

İki doku gücünün, modern entegre ve ayrık GPU'larda performans avantajları var mı? İkisi olmayan dokuların avantajları nelerdir?

Önemli bir masaüstü popülasyonunda, ikisinin de olmayan dokusunu destekleyen kartlar var mı?


Benzer bir soruya verilen bu mükemmel cevaba bakınız: Neden iPhone'daki dokuların görüntüleri ikisinin boyutuna sahip olmalı?
Dvole

Yanıtlar:


15

Modern entegre ve ayrık GPU'larda iki dokunun gücüne bağlı kalmanın performans avantajları var mı?

Modern GPU'ların çoğu iki (NPOT) dokuya güç vermemesini destekliyor ve onları iyi idare ediyor. Performans düşüşü oldukça az. Ancak dikkate alınması gereken birkaç sorun var:

  • NPOT dokusu kullanıldığında, tıpkı bir sonraki boyutlu POT dokusu gibi, RAM'de daha fazla yer kaplar. Teknik olarak, içine bir şey koymak için kullanılabilecek alanı boşa harcıyorsunuz;

  • NPOT dokuları, bir sonraki boyuttaki POT'a kıyasla belirgin şekilde daha yavaş (OpenGL 2.1'de% 30 performans düşüşüne sahiptim);

  • Eski GPU'lar ve on-board / chip-on GPU'lar o kadar gelişmiş değil, genellikle NPOT dokularını destekliyorlar, ancak destek oldukça yavaş ve sakar;

  • Daha eski GPU'lar bile NPOT dokularını kabul etmeyi / görüntülemeyi reddedebilir;

  • Mip harita enterpolasyonunun neden olduğu kenar artefaktları olabilir, 25x25 dokunuzda pikselleri 32x32 boyutuna doldurmak için eklenmiş siyah bir saçak olabilir.

PS Mobil cihazlar hakkında emin değilim, POT dokuları ile ilgili daha da kısıtlamalar olabilir.

Varsa, iki dokudan birinin gücünün ne gibi avantajları vardır?

Bildiğim kadarıyla sadece 2 avantajı var:

  • Paketlenmemişlerse HDD’de daha az yer kaplarlar (paketli boş alanlar çok az ilave sağlarsa)
  • NPOT -> POT dönüştürücü yazarken zaman kazanabilirsiniz. Sürüm sürümü için bir taneye ihtiyacınız olacak, ancak arabirim / modeller tasarlamak ve prototip oluşturmak için NPOT dokularını kullanmak yeterli

İkisinin de olmayan dokusunu destekleyen kartlara sahip olmayan büyük masaüstü kullanıcıları var mı?

Bilgisayarda bildiğim ve test ettiğim kadarıyla - Evet. Bu, hız düşürücü / küçük hata GPU'larının büyük bir yüzdesini ve NPOT'u hiç kullanmayacak küçük bir kart yüzdesini içerir.


6

İkisinin güç olmayan dokusunun yaygın bir kullanımı, 'ekran boyutunda' veya 'yarım ekran boyutunda' (vb.) İçindir; işlem sonrası etkiler için kullanılan hedef dokuları oluşturur.

Bu gibi durumlarda, mipmaplara gerek yoktur, arabellek her zaman sıkıştırılmamıştır, bu nedenle tek doku boyutları burada daha az soruna neden olur


4

Eski donanımda NPOT dokuları için sınırlamalar vardı. Bu OpenGL wiki'de belirtildiği gibi , bazı eski donanımlar NPOT'ların mipmaplere sahip olmamasını, sıkıştırılmış dokuların 4x4 piksellerin hizalanmasını gerektirir, ancak yeni donanımın mükemmel şekilde ele alması gerekir.

Tecrübelerime göre, nispeten yeni bir donanım bile olsa, POT'lar yerine NPOT dokuları kullanıyorsanız büyük performans elde edersiniz. Sorunun ne olduğunu bilmiyorum; Bazı oluşturma durumlarının birleşiminde, oluşturma işleminin aslında yazılımda yapılması mümkündür. Bu nedenle, iyi nedenleriniz olmadıkça, POT'ları mümkün olduğunca kullanmaya çalışmanızı tavsiye ederim.

Neden POT'lar yerine NPOT'ları kullandığına gelince - NPOT boyutuna sahip görüntülere sahipseniz, örneğin 1600x1200, 2048x2048 piksel yüzeyini kullanmak çok fazla video belleği israf edecektir.


3
Belleğe sıkıştırılmış doku formatları kullanıyorsanız (örneğin PVR veya DXT), bir sonraki ikinin gücüne ölçeklendirme, sıkıştırılmamış fakat daha küçük bir NPOT dokusundan önemli ölçüde daha az doku belleği kullanacaktır.
Tetrad

3
İfadeleriniz biraz belirsizdir, bu yüzden söylemeye çalıştığınız şey gereksizse, üzgünüm - sıkıştırılmış dokular hala NPOT dokuları destekleyen modern donanımda bile 4 katın piksel boyutlarını gerektirir.

1
Şu anki donanımın siz yüklediğinizde sürücülerde hala dokuları döşenmesini / şiştiğini beklerdim. Bu, donanım için daha optimum erişimi sağlamak için dokunun düzenini değiştirir. Konsollar (buna XNA'yı dahil etmiyorum) bu yerleşim optimizasyonunu kendi takım zincirinizde manuel olarak gerçekleştirmenizi gerektirir, bunların yalnızca POW2'de çalıştığından eminim.
Roger Perkins

-1

2 dokunun gücü, sadece eski GPU'lar için değil (% 30 daha hızlı, yüksek uçlu bir GPU ile ortalama bir arasındaki farktır) herhangi bir GPU türü için performansı yaklaşık% 30 artırır. dokular için kenar yumuşatma gibi çalıştığı belirli mesafeye uygun doku boyutu sağlayarak koyu çizgi eseri oyun motorları tarafından kullanılmalı ve aaa motorlar bunları iyi idare etmeli


Bu sadece kullandığınız neden olan sorunun kendisi gidermez gelmez, güç-iki dokular bir (zaten belirtilmiş) avantaj sağlamaktadır olmayan yukarıdaki avantajları göz önüne alındığında -Güç-iki dokular.
Josh

Özür Sana vb muhtemelen bu ana nedeni olduğunu 2048, 1024, 512 ile sınırlıdır 2'nin güç tarafından, soruyu yanlış
yusef ghatavi

ayrıca 2 nin gücü de, her zaman kameraya yakın olan birinci şahıs karakteri için gui dokuları ve dokuları gibi mipmaplara ihtiyaç duymayan doku için kullanışlıdır
yusef ghatavi

-3

Programcı sanatım sadece doğru boyutta.

Ekran mantığımı, ekranın sol üst kısmına bir doku ayarlamak istediğimde 0,0'ı dokunun sol üst kısmı olarak ayarlayabildiğim ve tüm dokuyu oradaki doğru konumda görebildiğimi bilmek kesinlikle kolaylaştırıyor. 0alfa dolgu eklemek zorunda kalsaydım, dokuyu ekranın kenarına karşı konumlandırmak daha karmaşık olurdu. Ayrıca, tabii ki, 0alfa hala alfa harmanlanmalı ve opak dokulara bakıyorsam, alfa kanalına sahip olmamayı tercih edebilirim.


6
Genellikle bir tanesi ekrana dokular değil çokgenler yerleştirir. Poligonlara, gerekli olan UV'leri verilebilir - bunların 0'dan 1'e kadar gitmeleri gerekmez; Dokunuz yalnızca 30 geniş ise, 0,9375'e kadar gitmek iyidir (POT dokuların iyi olmasının başka bir nedeni budur - UV'ler tam olarak gösterilebilir).
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.