Herkese merhaba,
Unreal Engine'de yüzeylerimizi kaplarken genellikle iki ana yöntem arasında kalıyoruz: Birincisi, Substance Painter veya benzeri bir yazılımda özenle hazırladığımız, yüksek sanatsal kontrole sahip PBR (Physically Based Rendering) texture setleri (Albedo, Normal, Roughness, Metallic vb.). İkincisi ise, tamamen motor içinde, Material Editor'de nodelar kullanarak oluşturduğumuz procedural (prosedürel) materyaller. PBR setleri bize piksel piksel kontrol imkanı sunarken, özellikle büyük ve çeşitli dünyalar yaratırken devasa boyutlarda texture hafızası (VRAM) ve disk alanı tüketebilir. Ayrıca 'tiling' (doku tekrarı) sorununu gizlemek için ekstra efor gerektirir.
Prosedürel materyaller ise bu sorunlara harika bir çözüm sunuyor. Tek bir materyal ile sayısız varyasyon yaratabilir, world-space koordinatları ve çeşitli noise (Perlin, Voronoi vb.) nodeları kullanarak 'tiling' sorununu tamamen ortadan kaldırabiliriz. Bu yaklaşım, VRAM kullanımını ciddi ölçüde düşürür ve paket boyutunu küçültür. Ancak madalyonun diğer yüzünde ise shader karmaşıklığı (shader instruction count) var. Fazla karmaşık bir prosedürel materyal, her frame'de GPU üzerinde daha fazla hesaplama gerektirir ve bu durum 'overdraw' olan sahnelerde performansı olumsuz etkileyebilir. Özellikle 'static vs dynamic branching' gibi shader optimizasyon konuları, prosedürel materyallerde daha kritik hale geliyor. Siz kendi projelerinizde bu iki yöntem arasında nasıl bir denge kuruyorsunuz? Özellikle büyük açık dünyalar tasarlarken VRAM'i verimli kullanmak için ne gibi prosedürel teknikler uyguladınız? Paylaşabileceğiniz materyal grafiği örnekleri veya optimizasyon ipuçları var mı?