Oyun Geliştirme
Occlusion culling
Occlusion Culling ile görüş dışı yüzeyleri eleyip öğrenirsin.
Frustum culling vs Occlusion culling
Unity, kamera görüş piramidinin (Frustum) dışındaki nesneleri varsayılan olarak çizmez (Frustum Culling). Ancak görüş alanı içinde olup devasa bir duvarın ya da binanın arkasında kalan nesneler yine de render edilerek GPU'yu gereksiz yorar (Overdraw).
// Occlusion Culling:
// Gorus acisinda olsa bile ondeki nesneler tarafindan
// tamamen kapatilan arka nesneler cizilmez.
Occlusion Culling, öndeki engellerin arkasında kalan nesneleri eleyerek gereksiz çizimleri engeller.
Occlusion bake ve static ayarları
Occlusion Culling verileri sahne için önceden pişirilir (Bake). Arkasını kapatacak büyük yapılar Occluder Static, engeller arkasında gizlenebilecek küçük nesneler ise Occludee Static olarak işaretlenir.
// Editorden ayar:
// Pencere -> Rendering -> Occlusion Culling -> Bake
// 'Smallest Occluder' degeriyle engel hassasiyeti belirlenir.
Bake işlemi tamamlandığında kamera hücreler arası hareket ederken arkada kalan nesneler anında devreden çıkarılır.
Uygulama Culling durumunu simüle et
inFrustum ve isOccluded bayraklarını incele: Görüş alanı dışında ise (!inFrustum) "Frustum Disi", görüş alanında ama kapalıysa (isOccluded) "Occlusion ile Elendi", aksi halde "Cizildi" durumunu Console.WriteLine ile ekrana yazdır.
Örnek çözümü göster
using System;
class CullingTest
{
static void Main()
{
bool inFrustum = true;
bool isOccluded = true;
string status;
if (!inFrustum)
status = "Frustum Disi";
else if (isOccluded)
status = "Occlusion ile Elendi";
else
status = "Cizildi";
Console.WriteLine($"Durum: {status}");
}
}
Kendini test et
-
Kamera görüş açısı içinde olmasına rağmen önündeki duvar yüzünden görünmeyen nesnelerin çizilmesini engelleyen sistem hangisidir?
- Occlusion Culling
- Frustum Culling
- Dynamic Batching
- Post-processing Bloom
Cevabı göster
Occlusion Culling — Occlusion Culling, kamera görüş alanında bulunsa dahi diğer katı nesnelerin arkasında kalanları tespit edip render listesinden eler.
-
Occluder static bayrağı
StaticEditorFlags flags = StaticEditorFlags.____;
Cevabı göster
StaticEditorFlags flags = StaticEditorFlags.OccluderStatic;
-
Culling terimleri
- Frustum Culling
- Kamera görüş alanı dışındakileri çizmez
- Occlusion Culling
- Arkada gizlenen nesneleri eler
- Occluder
- Arkasındakileri gizleyen engel
- Occludee
- Engel arkasında gizlenebilen nesne
Sıradaki ders: Özet - Performance