Oyun geliştirmedeki ve özellikle oyun grafiğindeki çoğu şey gibi, cevabı da "bağlıdır"
Doku boyutu
Dokunuzun çözünürlüğünün oluşturma hızı üzerinde bir etkisi olabilir. İçerdiği piksel sayısı arttıkça, GPU'ya yüklenecek daha ham veriler ve bir kerede önbelleğe sığabileceğimiz doku miktarı azalır, bu nedenle gölgelendirici dokunun sağ kısmını beklerken daha fazla duraklamaya neden olabilir önbelleğe almak için.
Mipmap kullanmak, bunun etkisini azaltabilir. Mipmap'larla, dokuların küçültülmüş versiyonlarını bir zincirde saklıyoruz; bu, ilk başta etrafta dolaşmak için daha fazla bellek gibi geliyor. Ancak, doku ekranda küçük bir boyutta (perspektifte uzak bir nesne gibi) görüntülendiğinde daha küçük sürümlerden okumamızı sağlar, böylece numunelerimiz her yere atlamak yerine doku önbelleğini daha iyi kullanır. Bu aynı zamanda takma adımı da azaltır.
Doku detay
Dokularınızın içeriğinin, çoğu zaman verimliliği artırmada etkisi yoktur.
Bir renk, GPU’ya gelince, sadece bir demet sayıdır, bu yüzden bu sayıların ne olduğu umrunda değil, sadece matematiği ile aynı şekilde hizalamasını sağlar. "Ah, daha önce bu yeşilde bir piksel gördüm, sadece bu girişi gördüğümde hesapladığım çıktıyı tekrar kullanacağım" hatırlamak gibi bir şey yapmaz, böylece dokunuz tek renkli mi? veya rastgele parıldıyorsa, GPU'nuz aynı işi yapıyor.
Görüntünün öngörülebilir alanlarında daha verimli bir şekilde sıkıştıran ve karmaşık bölgelerde daha fazla bit yiyen PNG ve JPG gibi formatlardan farklı olarak, BTC, ETC, PVRTC ve hatta ham RGBA gibi GPU doku formatları blok başına sabit sayıda bit kullanır. piksel. Dolayısıyla, aynı sıkıştırma biçimini korurken dokunuzu daha fazla veya daha az ayrıntılı hale getirmek, veri boyutunu değiştirmez veya veri aktarımını ve önbellekle ilgili verimliliği etkilemez.
Ancak, önceki sıkıştırmanızın iyi bir şekilde korumadığı belirli bir ayrıntı kullanırsanız, tüm görüntünüzü, veri boyutunu tekrar değiştirebilecek farklı bir format kullanmak üzere değiştirmeniz gerekebilir.
Shader Dallanma ve Dolaylılık
İşte durumdaki en büyük yıldız işareti: bu doku renk girdisini if()
dal gibi kararlar vermek için kullanıyor olabilirsiniz . Burada detay hız için önemlidir.
GPU gölgeleme birimleri, aynı komutları birden fazla veri akışında paralel olarak çalıştırarak toplu işlerde piksel blokları üzerinde çalışır. Öyleyse, bloktaki bazı pikseller bir dalını alırken if
diğer pikseller diğerini alır, tüm toplu işlemin her iki daldan geçmesi gerekir (bir piksel kümesine veya diğerine uygulanmayan sonuçları maskelemek)
Girişiniz düzgün / tahmin edilebilir bir şekilde değişiyorsa, büyük olasılıkla yalnızca tek bir dal almanız gereken birçok bloğa sahip olursunuz ve bu her iki dalın da olayı, geçiş sınırındaki dar bantlarla sınırlandırılır. Ancak girişiniz rastlantısalsa, blokların her ikisinin de dal almasını ve görüntülemeyi yavaşlatmasını bekleriz.
Bu, aramaları bozulma veya dizin haritası gibi ikinci bir dokuda kontrol etmek için tek bir doku kullanıyorsanız da olabilir. İlk doku rastgele atlarsa, ikinci dokunun dağınık, rastgele-lekeli noktalarından örnekleme yaparız, doku önbelleğimizi daha az tutarlı kullanır ve ortalama olarak ihtiyaç duyduğumuz verileri elde etmek için daha uzun süre bekleriz.
Yani, genel olarak: hayır, dokunun içeriği, olduğu durumlar hariç, oluşturma hızını çok fazla etkilemez. ;)