Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
C# Dersleri

Unity Aydınlatma: Işık Türleri, Gölgeler ve Lightmap Bake

Paylaşan: Unity Eğitim 31 October 2025 9 dakika okuma 247 görüntülenme

Bir oyunun atmosferini, ruh halini ve görsel kalitesini belirleyen en önemli unsurlardan biri şüphesiz aydınlatmadır. Unity, geliştiricilere güçlü ve esnek bir aydınlatma sistemi sunarak, basit sahne aydınlatmasından karmaşık, gerçekçi ışıklandırmaya kadar geniş bir yelpazede çözümler sunar. Bu makalede, Unity Aydınlatma sisteminin temel bileşenlerini, farklı ışık türlerini, gölgelerin nasıl çalıştığını ve performans için kritik öneme sahip Lightmap Bake (ışık haritalama) tekniklerini detaylıca inceleyeceğiz.

Unity'de Işık Neden Bu Kadar Önemli?

Işık, sadece nesnelerin görünür olmasını sağlamakla kalmaz, aynı zamanda oyuncunun dikkatini belirli noktalara çekebilir, sahnenin derinliğini artırabilir ve duygusal bir etki yaratabilir. Doğru Unity Aydınlatma kullanımı, bir oyunun sadece teknik kalitesini değil, aynı zamanda sanatsal değerini de yükseltir. Yanlış veya eksik aydınlatma ise en iyi modellemeyi ve dokuyu bile cansız gösterebilir.

Unity Işık Türleri: Her Birinin Amacı

Unity'de üç ana gerçek zamanlı ışık türü ve bir de sadece bake edilebilen bir ışık türü bulunur. Her birinin belirli kullanım senaryoları ve özellikleri vardır:

1. Directional Light (Yönlü Işık)

Güneş ışığı gibi, sahnedeki tüm nesneleri aynı yönden ve paralel ışınlarla aydınlatan bir ışık türüdür. Konumu önemli değildir, sadece yönü önemlidir. Genellikle dış mekan sahnelerinde ana ışık kaynağı olarak kullanılır. Performans dostudur çünkü ışınları paraleldir ve her nesneye aynı şekilde etki eder.

2. Point Light (Noktasal Işık)

Bir ampul veya mum gibi, tek bir noktadan her yöne yayılan ışık türüdür. Işığın şiddeti mesafeyle azalır. İç mekan sahnelerinde, lambalar, fenerler gibi lokal ışık kaynakları için idealdir. Bir nesnenin etrafındaki küçük bir alanı aydınlatmak için kullanılır.

3. Spot Light (Spot Işık)

Bir el feneri veya sahne ışığı gibi, belirli bir koniden dışarıya doğru yayılan ışık türüdür. Işığın yoğunluğu ve açısı ayarlanabilir. Özellikle vurgulanmak istenen nesneler veya sahneler için kullanışlıdır. Belirli bir alana odaklanmış ışıklandırma sağlar.

4. Area Light (Alan Işığı)

Bu ışık türü sadece baked (pişirilmiş) aydınlatma için kullanılabilir. Bir pencere veya ışıklı panel gibi, belirli bir alandan yayılan yumuşak ve doğal ışık sağlar. Gerçek zamanlı olarak kullanılamaz ancak lightmap'lerde çok doğal ve yumuşak gölgeler oluşturur. Mimari görselleştirmelerde veya iç mekan aydınlatmasında sıkça tercih edilir.

Gölgeler: Derinlik ve Gerçekçilik Katmak

Gölgeler, sahnedeki nesnelere derinlik katar ve onların uzamsal ilişkilerini daha anlaşılır hale getirir. Unity'de gölgeler, Light bileşeni üzerinden kontrol edilir ve üç ana modda olabilir:

  • No Shadows: Hiç gölge oluşturmaz. En performanslı seçenektir.
  • Hard Shadows: Keskin, belirgin gölgeler oluşturur. Daha az performans maliyetine sahiptir.
  • Soft Shadows: Daha yumuşak, gerçekçi gölgeler oluşturur. Performans maliyeti daha yüksektir.

Gölgelerin kalitesi ve performansı, Project Settings > Quality bölümündeki gölge ayarları (Shadow Resolution, Shadow Distance, Shadow Cascades) ile optimize edilebilir. Özellikle Shadow Distance (Gölge Mesafesi), performansı en çok etkileyen ayarlardan biridir. Uzak mesafelerdeki gölgeler genellikle daha az detaya ihtiyaç duyar, bu yüzden bu mesafeyi akıllıca ayarlamak önemlidir.

Lightmap Bake: Performans ve Gerçekçiliğin Dengesi

Unity Aydınlatma dünyasında Lightmap Bake, statik (hareketsiz) nesnelerin ışık ve gölge bilgilerini bir doku haritasına (lightmap) önceden hesaplayıp kaydetme işlemidir. Bu işlem, çalışma zamanında (runtime) ışık hesaplamalarını büyük ölçüde azaltarak performansı artırır ve daha gerçekçi, yüksek kaliteli küresel aydınlatma (Global Illumination - GI) elde etmeyi sağlar.

Neden Lightmap Bake Kullanmalıyız?

  • Performans Artışı: Özellikle çok sayıda ışık kaynağı ve karmaşık geometri içeren sahnelerde, ışıklandırma hesaplamaları CPU/GPU üzerinde ciddi yük oluşturabilir. Bake edilmiş ışıklandırma, bu yükü çalışma zamanından kaldırır.
  • Gerçekçi Global Illumination: Işıkların nesnelerden yansımasıyla oluşan dolaylı ışıklandırmayı (GI) simüle eder. Bu, sahnelere daha doğal ve yumuşak bir görünüm kazandırır.
  • Daha Yumuşak Gölgeler: Baked gölgeler genellikle gerçek zamanlı gölgelere göre daha yumuşak ve doğal görünür.

Lightmap Bake İşlemi Adımları:

  1. Statik Nesneleri İşaretleme: Bake edilecek tüm nesnelerin (modeller, zemin, duvarlar vb.) Inspector panelinde sağ üstteki Static kutucuğunu işaretleyin. Özellikle Lightmap Static seçeneğinin aktif olduğundan emin olun.
  2. Işıkları Ayarlama: Işık kaynaklarınızın Mode ayarını belirleyin:
    • Baked: Sadece Lightmap'e kaydedilir, çalışma zamanında aktif değildir.
    • Realtime: Sadece gerçek zamanlı çalışır, Lightmap'e katkıda bulunmaz.
    • Mixed: Hem gerçek zamanlı hem de Lightmap'e katkıda bulunur. Genellikle ana ışık kaynakları için tercih edilir.
  3. Lighting Penceresi: Window > Rendering > Lighting yolunu izleyerek Lighting penceresini açın. Buradan Environment, Realtime GI ve Lightmaps ayarlarını yapabilirsiniz.
  4. Bake İşlemi: Generate Lighting butonuna tıklayarak işlemi başlatın. Unity, sahnede bulunan statik nesneler için ışık ve gölge haritalarını hesaplayacaktır.

Yaygın Lightmap Ayarları:

  • Lightmap Resolution: Her bir Unity birimi başına düşen piksel sayısı. Yüksek çözünürlük daha detaylı ama daha büyük dosya boyutlu lightmap'ler demektir.
  • Padding: Lightmap'teki farklı nesnelerin UV adaları arasındaki boşluk. Artifact'leri önlemek için önemlidir.
  • Lightmap Parameters: Farklı kalite ve özelliklerde lightmap'ler oluşturmak için ön tanımlı ayarlar veya özel parametreler.

Pratik İpuçları ve En İyi Uygulamalar

1. Karma Aydınlatmayı (Mixed Lighting) Akıllıca Kullanın

Ana ışık kaynağınız (genellikle Directional Light) için Mixed modu kullanmak, hem gerçek zamanlı dinamik gölgeler hem de baked Global Illumination'dan faydalanmanızı sağlar. Bu, hareketli nesnelerin gölgelerini doğru gösterirken, statik sahnede yüksek kaliteli GI elde etmenize olanak tanır. Özellikle dış mekan sahnelerinde Unity Aydınlatma kalitesini artırır.

2. Gölge Mesafesini ve Kalitesini Optimize Edin

Project Settings > Quality içinde Shadow Distance değerini sahnenizin ihtiyaçlarına göre ayarlayın. Oyuncunun göremeyeceği kadar uzaktaki gölgeleri oluşturmanın bir anlamı yoktur. Ayrıca, Shadow Cascades sayısını da optimize ederek uzak mesafelerde daha az detaylı gölgeler kullanabilirsiniz. Bu, özellikle açık dünya oyunlarında performansı önemli ölçüde artırır.

3. Lightmap UV'lerini Kontrol Edin ve Hataları Ayıklayın

Bake edilmiş ışıklandırmada oluşan lekeler, dikişler veya bozulmalar genellikle UV haritalamasından kaynaklanır. Modellerinizin doğru Lightmap UV'lerine sahip olduğundan emin olun (Model Import Settings içinde Generate Lightmap UVs seçeneğini işaretleyebilirsiniz). Sorunları ayıklamak için Scene penceresindeki Draw Mode açılır menüsünden Lightmap UVs veya Baked GI seçeneklerini kullanarak ışık haritalarınızı görselleştirebilirsiniz.

4. Reflection Probes Kullanmayı Unutmayın

Gerçekçi yansımalar için Reflection Probes (Yansıma Probları) kullanın. Bu proplar, belirli bir noktadan sahnenin bir görüntüsünü yakalar ve bu görüntüyü yansıma haritası olarak kullanır. Özellikle parlak yüzeylere ve suya gerçekçilik katmak için kritik öneme sahiptirler. Çoğu durumda, propları Baked olarak ayarlayarak performans kazancı sağlayabilirsiniz.

Yaygın Hatalar ve Çözümleri

1. Nesneler Işık veya Gölge Almıyor

Neden: Nesne Static olarak işaretlenmemiş veya Lightmap Static seçeneği aktif değil. Ya da ışık kaynağının Culling Mask'i nesnenin katmanını içermiyor. Çözüm: Nesnenin Inspector'ında Static kutucuğunu işaretleyin ve Lightmap Static'in etkin olduğundan emin olun. Ayrıca ışık kaynağının Culling Mask ayarını kontrol edin.

2. Lightmap'lerde Çirkin Lekeler veya Dikişler

Neden: Yetersiz Lightmap çözünürlüğü, yanlış UV haritalaması veya düşük Padding değeri. Çözüm: Lightmap Resolution'ı artırın. Modelin Import Settings'inden Generate Lightmap UVs seçeneğini aktif edin. Lighting penceresindeki Lightmap Parameters içinde Padding değerini artırın.

3. Performans Sorunları: Oyun Yavaşlıyor

Neden: Çok fazla gerçek zamanlı ışık, yüksek kaliteli gerçek zamanlı gölgeler, çok uzun Shadow Distance veya çok fazla Mixed mod ışık kaynağı. Çözüm: Mümkün olduğunca statik nesneler için Baked ışıkları kullanın. Gerçek zamanlı ışık sayısını ve gölge kalitesini sınırlayın. Shadow Distance'ı optimize edin. Gereksiz ışıkların Culling Mask'lerini ayarlayarak sadece belirli katmanları aydınlatmasını sağlayın.

Performans ve Optimizasyon Notları

  • Bake Edilebilen Her Şeyi Bake Edin: Sahnenizdeki hareket etmeyen her şeyi Static olarak işaretleyip Lightmap'lere dahil etmek, en büyük performans kazancını sağlar.
  • Gerçek Zamanlı Işık Sayısını Sınırlayın: Özellikle gölge oluşturan gerçek zamanlı ışıklar pahalıdır. Sahne başına birkaç taneyi geçmemeye çalışın.
  • Işık Culling Mask'lerini Kullanın: Işık kaynaklarınızın sadece belirli katmanlardaki nesneleri etkilemesini sağlayarak gereksiz hesaplamaları önleyin.
  • Light Probe'ları Akıllıca Yerleştirin: Hareketli nesneler için dolaylı ışıklandırma sağlamak amacıyla Light Probe'ları stratejik olarak yerleştirin. Çok fazla Light Probe, bake süresini artırabilir.
  • Texture Compression: Lightmap'ler de büyük dokular olabilir. Doğru sıkıştırma formatlarını kullanarak dosya boyutunu ve belleği optimize edin.

Unity Aydınlatma sistemi, oyunlarınıza hayat vermek için güçlü bir araçtır. Işık türlerini, gölgeleri ve Lightmap Bake gibi teknikleri doğru bir şekilde anlayıp uygulayarak, hem görsel olarak etkileyici hem de performanslı oyunlar geliştirebilirsiniz. Unutmayın, iyi aydınlatma sadece teknik bir beceri değil, aynı zamanda sanatsal bir yetenektir.

Küçük Bir C# Kodu Örneği: Işık Yoğunluğunu Değiştirmek

Bir ışığın yoğunluğunu kod ile nasıl değiştirebileceğinizi gösteren basit bir örnek:

using UnityEngine;

public class LightFlicker : MonoBehaviour
{
    public Light targetLight;
    public float minIntensity = 0.5f;
    public float maxIntensity = 1.5f;
    public float flickerSpeed = 0.1f;

    void Update()
    {
        if (targetLight != null)
        {
            targetLight.intensity = Mathf.Lerp(minIntensity, maxIntensity, Mathf.PingPong(Time.time * flickerSpeed, 1.0f));
        }
    }
}

Bu kod parçacığı, bir Light bileşeninin yoğunluğunu zamanla minIntensity ve maxIntensity değerleri arasında dalgalandırarak titreme efekti oluşturur. Bu, özellikle fenerler veya ateş gibi ışık kaynakları için dinamik bir etki yaratmakta kullanılabilir.

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!