Source Engine ışıklandırma rehberi: GMod haritalarını doğru aydınlatmak
Source Engine ışıklandırma rehberi: light, light_spot, light_environment, HDR derleme, lightmap scale, cubemap'ler ve en sık görülen ışıklandırma hataları.
Source Engine'de ışıklandırma büyük ölçüde önceden hesaplanır: VRAD derleyicisi, ışık entity'lerinden yola çıkarak lightmap'leri hesaplar ve BSP'ye kaydeder. İç mekânlar için light ve light_spot, güneş ve gökyüzü için tek bir light_environment yerleştirirsin. Ardından VRAD ile derler ve yansımalar için cubemap'leri oyun içinde oluşturursun.
En önemli ışık entity'leri
| Entity | Etkisi | Tipik kullanım |
|---|---|---|
light | Noktasal ışık, her yöne yayılır | Lambalar, odalarda temel aydınlık |
light_spot | İç ve dış açısı olan ışık konisi | Spot ışıkları, tavan spotları, sokak lambaları |
light_environment | Tüm harita için güneş ve gökyüzü ışığı | Dış mekânlar |
light_dynamic | Gerçek zamanlı ışık, önceden hesaplanmaz | Hareketli ya da titreyen ışıklar, idareli kullan |
env_projectedtexture | Dinamik gölgeli, projeksiyonla yansıtılan gerçek zamanlı ışık | Tekil vurgular, pahalı |
Bir ışığın parlaklığı dört sayıdan oluşur: kırmızı, yeşil, mavi ve yoğunluk. Falloff ayarları, ışığın mesafeyle ne kadar hızlı zayıfladığını belirler. Önceden hesaplanmış ışıklar oyunda performanstan neredeyse hiçbir şey götürmez, gerçek zamanlı ışıkların ise her karede bir maliyeti vardır. Atmosferi light ve light_spot ile kur, dinamik ışıkları yalnızca bilinçli olarak kullan.
Güneş ve gökyüzü: light_environment ve skybox
Bir light_environment, haritayı tools/toolsskybox texture'ı ile kaplanmış tüm yüzeyler üzerinden aydınlatır. Üç değer önemlidir:
- Brightness and Color: doğrudan güneş ışığının rengi ve gücü.
- Ambient Color and Brightness: dağınık gökyüzü ışığı. Gölgeleri aydınlatır ve doğrudan güneş almayan alanların ne kadar karanlık olacağını belirler.
- Pitch ve Yaw: güneşin hangi yönden vurduğu.
SunSpreadAngle güneş gölgelerini yumuşatır. Skybox texture'ının kendisi Map > Map Properties altında ayarlanır. Işık rengi ve güneş yönü gökyüzü görüntüsüyle uyuşmalı, yoksa sahne tutarsız görünür. env_sun entity'si yalnızca gökyüzündeki güneş parıltısını çizer, hiçbir şeyi aydınlatmaz.
Uzaktaki manzarayı göstermek istiyorsan 3D skybox rehberini oku.
HDR mı LDR mi derlemeli
VRAD ışıklandırmayı iki biçimde hesaplayabilir: LDR (klasik parlaklık aralığı) ve HDR (otomatik pozlamalı genişletilmiş aralık). Parametreler -ldr, -hdr ve -both şeklindedir. Hiçbiri verilmezse GMod'un VRAD'ı yalnızca LDR hesaplar. Hammer'ın normal derleme penceresindeki "HDR" onay kutusu ikisini birden derler.
- Hızlı testler için LDR yeterlidir.
- Yayın için
-bothile derle. Böylece harita, HDR'si açık olan oyuncularda da olmayanlarda da doğru görünür. Işıklandırma iki kez hesaplanır, yani VRAD buna bağlı olarak daha uzun sürer.
HDR haritalarda otomatik pozlamayı env_tonemap_controller kontrol eder. O olmadan motorun varsayılan pozlama aralığı geçerli olur ve bu aralık her haritaya uymaz. Işıkların ayrıca kendi HDR parlaklık değerleri vardır. Varsayılan -1 -1 -1 1, normal değerin kullanıldığı anlamına gelir. Derleme adımlarının birbirine nasıl bağlandığı VBSP, VVIS ve VRAD nedir? yazısında anlatılıyor.
Lightmap scale ve gölge kalitesi
Bir yüzeyin lightmap scale değeri, tek bir lightmap örneğinin kaç birimi kapsadığını belirtir. Varsayılan değer 16'dır. Bunu texture aracında (Shift+A) değiştirirsin.
- Daha küçük değerler (8 ya da 4 gibi) daha keskin gölgeler verir ama belleğe, dosya boyutuna ve derleme süresine mal olur.
- Daha büyük değerler (32 ya da 64 gibi) ucuzdur ve büyük, eşit aydınlatılmış yüzeyler için yeterlidir.
Şu VRAD parametreleri son derlemede kaliteyi artırır:
-final: daha hassas ışık hesabı, belirgin biçimde daha yavaş.-StaticPropLighting:prop_staticışıklandırmasını tek bir noktada değil, modelin her vertex'i için hesaplar.-StaticPropPolys: gölgeler için kaba çarpışma modeli yerine prop'ların görünen şeklini kullanır.-TextureShadows: modeller bunun için bir RAD dosyasına kaydedilmiş ya da buna göre derlenmişse prop gölgelerinde saydam texture'ları hesaba katar. Genellikle yalnızca-StaticPropPolysile birlikte etki eder.
env_cubemap ile yansımalar
Parlak yüzeyler gerçek çevreyi değil, önceden yakalanmış bir panoramayı yansıtır. env_cubemap entity'leri bunun içindir:
- Her oda ya da ışık atmosferi için en az bir
env_cubemapyerleştir; kabaca baş hizasında ve geometrinin içinde kalmayacak şekilde. - Haritayı derle ve oyunda yükle.
- Konsola
buildcubemapsyaz. -bothile derlediysen cubemap'leri bir kez LDR, bir kez de HDR için oluştur. Aradamat_hdr_levelile geçiş yap ve haritayı yeniden yükle.
Her yeni derlemeden sonra cubemap'leri yeniden oluşturman gerekir. Sık görülen sorunlar Cubemap yansımalarını düzeltme yazısında ele alınıyor.
Tipik ışıklandırma hataları
- Fullbright: Her şey eşit parlaklıkta ve gölgesiz. Bu durumda harita hiç ışıklandırma verisi içermiyor demektir. Ya hiç ışık entity'si yoktur ya da VRAD çalıştırılmamış veya yarıda kesilmiştir. Compile log'u kontrol et.
- Harita çok karanlık: Çoğu zaman
light_environmententity'sinin ambient değeri çok düşüktür ya da iç mekânlarda dolgu ışıkları eksiktir. Zayıf eklightentity'leri ve daha açık renkli yüzeyler işe yarar, çünkü açık renkli texture'lar daha fazla ışık yansıtır. - Sert, basamaklı gölge kenarları: Lightmap scale fazla kaba. İlgili yüzeylerde değeri düşür. Yuvarlatılmış brush geometrisindeki görünür ışıklandırma ek yerleri smoothing group'larla giderilir.
- Siyah prop'lar:
-StaticPropLightingolmadan birprop_statictek bir noktada aydınlatılır. O nokta karanlıktaysa ya da bir duvarın içindeyse modelin tamamı simsiyah olur. Lighting origin olarak birinfo_lightingbunu çözer. - Çok fazla light style: Adı ya da titreme stili olan ışıklar kendi lightmap'lerine ihtiyaç duyar. Bunlardan birçoğu tek bir yüzeyde üst üste binerse VRAD uyarı verir.
- Leak: Leak varsa VVIS görünürlük verisi üretmez ve VRAD bu durumda yalnızca doğrudan ışığı hesaplar, yansıyan ışığı hesaplamaz. Önce harita leak hatasını düzelt.
VRAD log'undaki mesajları Map Scanner aracına yapıştırabilirsin. Bilinen mesajları nedenleri ve çözümleriyle eşleştirir.
Sık sorulan sorular
Haritam neden fullbright?
BSP hiç ışıklandırma verisi içermiyor. Bu, haritada tek bir ışık entity'si bile olmadığında ya da VRAD derleme sırasında atlandığında veya bir hatayla yarıda kesildiğinde olur. Bir ışık yerleştir, RAD ayarı "Normal" olacak şekilde derle ve log'u kontrol et.
Bir haritada kaç light_environment entity'si olabilir?
Bir tane. Güneş ve gökyüzü haritanın tamamı için geçerlidir. Farklı değerlere sahip birden fazla entity, farklı alanlarda farklı ışıklandırma üretmez.
HDR ile derlemek zorunda mıyım?
Hayır, yalnızca LDR içeren bir harita da çalışır. Yayınlanan bir harita için -both güvenli tercihtir, çünkü harita o zaman oyuncuların grafik ayarlarından bağımsız olarak doğru aydınlatılır.
Derlemeden sonra yansımalar neden yanlış görünüyor?
Cubemap'ler bu derleme için henüz oluşturulmamıştır. Her yeni derleme onları siler. Haritayı yükle, buildcubemaps komutunu çalıştır ve haritayı yeniden başlat.