Batching
- Oyun Geliştirme kursu
- Uzman
- Ders 2/47
- 4 dk
Static ve dynamic batching ile draw call sayısını düşürmeyi öğrenirsin.
Draw call ve batching nedir?
CPU'nun ekran kartına bir nesneyi çizmesi için verdiği her render emrine Draw Call denir. Ekranda yüzlerce bağımsız nesne olduğunda draw call sayısı fırlar ve CPU tıkanır. Batching, aynı materyali paylaşan nesneleri tek bir çizim çağrısında birleştirme tekniğidir.
// 100 farkli nesne ayni materyali kullaniyorsa:
// Batching yokken: 100 Draw Call
// Batching varken: 1 Draw CallDraw call sayısını düşürmek işlemci üzerindeki yükü ciddi ölçüde hafifletir.
Static ve dynamic batching
Static Batching: Sahne boyunca hiç hareket etmeyecek (Inspector'da Static işaretlenmiş) nesnelerin mesh'lerini tek bir büyük mesh'te birleştirir. Dynamic Batching ise küçük ve hareketli nesnelerin vertex'lerini CPU üzerinde her kare dinamik olarak birleştirir.
// renderer.material yerine sharedMaterial kullanilmalidir
// Cunku 'material' cagrisi kopyalama yaparak batching'i bozar!
Material m = renderer.sharedMaterial;Statik nesneleri doğru işaretlemek ve materyal kopyalarından kaçınmak batching başarısını artırır.
Uygulama Draw call tasarrufunu hesapla
Toplam nesne sayısından (totalObjects) benzersiz materyal sayısını (uniqueMaterials) çıkararak batching ile kazanılan savedCalls miktarını bul ve Console.WriteLine ile yazdır.
Başlangıç kodu
using System;
class BatchingSim
{
static void Main()
{
int totalObjects = 6;
int uniqueMaterials = 2;
// Draw call tasarrufunu hesapla ve sonucu yazdir
}
}Örnek çözüm
using System;
class BatchingSim
{
static void Main()
{
int totalObjects = 6;
int uniqueMaterials = 2;
int savedCalls = totalObjects - uniqueMaterials;
Console.WriteLine($"Tasarruf: {savedCalls} Draw Call");
}
}Beklenen çıktı
Tasarruf: 4 Draw Call
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Batching tekniğinin ana hedefi aşağıdakilerden hangisidir?
- Oyunun disk boyutunu minimuma indirmek
- Sahnedeki tüm poligonları tek bir noktada toplamak
- Oyun içi müzik ve ses dosyalarını sıkıştırmak
- Draw call sayısını azaltarak CPU yükünü hafifletmek Doğru cevap
Açıklama: Batching, aynı materyali kullanan nesneleri tek çizim çağrısında toplayarak CPU'nun GPU'ya gönderdiği emir sayısını azaltır.
2 Paylaşılan materyale eriş
// Batching bozulmasin diye sharedMaterial alinir
Material mat = renderer.____;
// Batching bozulmasin diye sharedMaterial alinir
Material mat = renderer.sharedMaterial;
Açıklama: renderer.material yeni bir materyal kopyası ürettiğinden batching'i bozar; sharedMaterial ise ortak referansı korur.
3 Batching türleri
| Kavram | Anlamı |
|---|---|
Draw Call |
CPU'nun GPU'ya gönderdiği çizim emri |
Static Batching |
Hareketsiz mesh'leri birleştirme |
Dynamic Batching |
Hareketli nesneleri her karede toplama |
GPU Instancing |
Aynı mesh'i farklı konumlarda çizme |