Three.js · Görüntü sonrası · SSAO
SSAO nedir? Işığın «giremediği» yerler
Ortam gölgelenmesi (ambient occlusion), ortam ışığının — yani gökyüzünden veya geniş «dolgu» aydınlatmasından gelen yumuşak bileşenin — nesneler birbirine sıkı yapıştığında, iç içe geçtiğinde veya dar köşelerde tam olarak karşı yüzeye sıçrayamaması ile oluşan bölgesel kararmadır. Fiziksel dünyada iki yüzeyin birleştiği sığınaklar, masa üstündeki nesnenin temas çizgisi veya panel birleşimleri doğrudan spot almasa bile çevreden yansıyan ışıkla aydınlanır; ancak orada yansımalar kısıtlanır ve yumuşak, düşük frekanslı bir «kuytu» tonu belirir. SSAO (Screen Space Ambient Occlusion) ise bu olgunun tam radyosit veya ışın takibi olmadan, yalnızca ekranda görünen pikseller üzerinden istatistiksel bir tahmindir — hızlıdır, fakat ekran dışı geometriyi görmez ve derinlik haritasının kalitesine mahkûmdur.
Bu sayfa SSAO’nun okuduğu veriyi ve tipik dört adımlık akışı kurar; zincirdeki rolü için Render target · EffectComposer ile ideal geçiş sırası sayfalarına başvurun — burada tampon mimarisini baştan anlatmıyoruz. Bloom parlaklığı yayar, depth of field derinliğe göre seçici bulanıklaştırır; SSAO ise çoğu zaman temas ve gövde okumasını güçlendiren ince kontrast katmanıdır — üçü farklı artefakt ve farklı sıra hassasiyeti taşır.
SSAO’nun temel faydaları
- Derinlik hissi. İzleyici, özellikle tek gözlü projeksiyonda mesafeyi örtüşme ve perspektifle çıkarır; SSAO ise yüzeylerin birbirine göre «sıkıştığı» bölgelerde hafif karartma ekleyerek katman ayrımını pekiştirir. Bu, sahneyi yapay şekilde karanlıklaştırmak değildir — çoğu uygulamada ortam tonuna çarpan küçük bir modülasyon olarak düşünülür; abartıldığında ise köşeler çamurlu ve kirli görünür.
- Temas algısı. Karakter veya mobilya zemine «yapışmıyor» gibi duruyorsa sebep çoğu zaman gölge veya contact shadow eksikliğidir. SSAO, ayak tabanı, tekerlek teması, kitapların raf üstü gibi birleşim çizgilerinde ince bir gövde gölgesi üreterek nesneyi zemine oturtur — gerçek zamanlı yönde tam ikame değildir; ışınlı temas gölgesi kadar keskin olmaz.
- Detay vurgusu. Kıyafet kıvrımı, çatlak, panel çukuru gibi küçük ölçekli girintilerde ortam kapanması göreceli olarak artar; yüzey normalleri düzgün olduğunda SSAO bu mikro kontrastı güçlendirir. Zayıf geometri veya düşük çözünürlükte aynı ayarlar «sahte oyuk» izlenimi verebilir.
SSAO algoritması nasıl çalışır?
SSAO tipik olarak tam bir fizik simülasyonu değil, ekran uzayı istatistiğidir: derinlik (ve çoğu varyasyonda yüzey yönü) ile komşu örnekleri karşılaştırarak «bu nokta ne kadar sığınakta?» sorusuna yaklaşık yanıt üretir. Tam varyantlar normalleri veya çoklu tamponları da okuyabilir; fakat omurga aynı kalır.
Derinlik haritası
Her piksel için kameraya göre uzaklık — genelde mevcut Z-tamponundan — okunur. Bu veri depth of field bölümünde de kullanılır; fakat DOF odak düzlemine göre bulanıklaştırırken, SSAO komşularla kıyaslayarak yerel engeller arar. Derinlik çözünürlüğü düşükse veya şeffaf yüzeyler yanlış yazıldıysa SSAO ilk bozulan efektlerden biridir.
Örnekleme
Piksel çevresinde — genelde teğet düzlemde veya ekran düzlemine projekte edilmiş bir disk üzerinde — rastgele veya yarı düzenli örnek noktalar seçilir. Örnek sayısı arttıkça tahmin stabil olur; maliyet ise doğrusal veya daha kötü ölçeklenir. Bu yüzden üretimde düşük örnek + sonradan yumuşatma sık görülür.
Kuytu / sığınak tespiti
Bir komşu örneğin derinliği, merkez piksele göre kameraya «daha yakın» veya belirli bir eşik üzerinde bloke edici görünüyorsa, merkez noktanın gökyüzüne açısı kısmen kapanıyor demektir. Çok sayıda böyle komşu, yüksek doluluk (occlusion) olarak yorumlanır. Bu geometrik mantık kabaca köşe ve çatlakları yakalar; düz zeminde ise teorik olarak doluluk düşük olmalıdır — pratikte gürültü ve hassasiyet yüzünden bias gerekir.
Karartma ve birleştirme
Elde edilen doluluk oranı genelde ortam aydınlatması ile çarpılarak veya doğrudan renge eklenerek sahneye uygulanır; motorlar bunu «çarpan», ek tampon veya son birleştirme geçişinde yapabilir. Sonuç tam siyah değil, kontrollü bir çarpımdır — aksi halde iç mekânlar tiyatro sahnesi gibi kararır.
Kullanım alanları: detayların dili
SSAO her projede zorunlu bir anahtar değildir. Algoritma, ekranda görünen geometrinin birbirine ne kadar yakın durduğunu «tahmin etmeye» çalışır; yüzeyler birbirinden uzaksa veya kamera çok geriden bakıyorsa gölgelenme zaten zayıf görünür ve SSAO’nun katkısı da düşer. Tam tersine, köşe çok, birleşim çizgisi çok ve küçük boşluk bol ise SSAO’nun farkı en çok burada ortaya çıkar — ama aynı yerlerde ayar hatası da en çok göze batar.
-
İç mekân tasarımları.
Gerçek iç mekânda dolap ile duvarın birleştiği çizgi, tavan köşeleri, süpürgelik arkası ve kablolama kanalları doğal olarak daha az ışık alır; sahneye sadece düz renk ve tek bir ortam ışığı eklediğinizde bu «kuytu» hissini tam oluşturmak zordur. SSAO, tam olarak bu çatlak ve sığınaklara hafif bir gölge sızdırarak «dolaba yapışık duruyor», «köşede gövde var» mesajını güçlendirir — böylece ortam daha yaşanılmış ve tutarlı görünür.
Risk şudur: güç çok artınca köşeler gerçek kir birikmiş gibi koyulaşır; özellikle beyaza yakın duvarlarda lekeli ve kirli boya izlenimi oluşur. Bu yüzden iç mekânda genelde yumuşak bir profil hedeflenir: «karanlık oda» değil, ince kontrast. Aynı değer, farklı ışık veya farklı exposure ile aynı görünmez; ışık değiştikçe SSAO’yu da birlikte gözden geçirmek gerekir.
-
Karakter modelleme.
Göz çukuru, burun–yanak birleşimi, parmak araları, zırh plakasının üst üste bindiği çizgiler gibi dar boşluklarda, izleyicinin hacim okumasına yardım eden hafif gölge fark edilir. SSAO, bu tür boşluklara otomatik bir vurgu koyar; aydınlatma yalnızca yönlü ışıkla zenginleşmediğinde veya oyunlarda her karede tutarlı gölge yokken «bedenin gövdesi var» hissini artırır.
Burada beklenti yönetimi önemlidir: modelin normalleri pürüzlü, UV dikişleri sert veya poligon seyrekse, SSAO o pürüzleri büyütüp tırtıklı gölge gibi gösterebilir. Bu durumda asıl çözüm çoğu zaman modeli veya bake edilmiş aydınlatmayı düzeltmek olur; çünkü post geçişi, zaten hatalı geometriyi «daha belirgin» hale getirmekten başka bir şey yapmayabilir.
-
Bitki örtüsü.
Ağaç ve çalı gibi kütlesi olan bitkilerde yüzeyler üst üste biner; göz, bu örtüşmeden derinlik çıkarır. SSAO, yaprak kütleleri birbirine yakın durduğunda bu örtüşmeyi vurgulayıp tek parça yeşil küreye yakın düz görünümü kırar — özellikle kamera bitkilere yakınken.
Yapraklar rüzgârla veya animasyonla sürekli hareket ediyorsa, düşük örnek sayılı SSAO kare kare hafifçe titreyebilir; bu «zarf üzerinde kumlanma kayması» gibi algılanır. Çözüm çoğu zaman örnek sayısını veya yumuşatma (blur) geçişini artırmak, bazen de bitki için SSAO’yu kısmak veya kapatmaktır — her sahneye aynı güç verilmez.
Kritik parametreler: ayarın dengesi
Arayüzde hep İngilizce ya da kütüphane özel isimler görürsünüz: biri «yarıçap», biri «şiddet», biri ufak bir «epsilon» veya «bias». Karmaşa yaratsa da mantık üç soruya iner: Gölge etkisini ne kadar geniş mesafede arayacağız? Bulduğumuz gölgeleri ekranda ne kadar belirgin yapacağız? Derinlik haritasındaki küçük sayısal titremeleri hangi ölçüde görmezden geleceğiz — böylece düz zeminde sahte çukur çıkmayacak?
-
Radius (yarıçap).
Bu ayar, her pikselin etrafında «kimleri komşu sayacağımızı» belirleyen dairenin ekrandaki boyutunu kontrol eder. Yarıçapı büyüttüğünüzde algoritma daha uzaktaki yüzeyleri de «önümü kesiyor» gibi görür; böylece kuytu etkisi genişler ama yanlış pozitifler artar — düz bir zeminde bile uzaktaki nesne, yakındaki pikselin önünü kapatıyormuş gibi okunabilir ve sahne kirlileşir.
Yarıçapı küçülttüğünüzde ise etki çoğu zaman yalnızca gerçekten birbirine yapışık çizgilere sıkışır; uzaktan bakınca SSAO sanki hiç yokmuş gibi kalır. Pratikte çözünürlük ve kamera alanı değiştikçe aynı sayısal değer farklı görünür: düşük çözünürlükte pikseller büyüdüğü için yarıçapı birlikte yeniden düşünmek gerekir.
-
Intensity (şiddet).
Şiddet, bulunan gölgelerin ekranda ne kadar «koyulaştırılacağını» ayarlar — yani kararma miktarının ana ses seviyesi gibidir. Çok yükseltildiğinde özellikle iç mekân ve açık renk yüzeyler köşelerden içeri doğru hızla kararır; sahne kasıtlı olarak dramatikleştirilmiyorsa izleyici bunu kir veya yanlış exposure olarak yorumlayabilir.
Çok düşürüldüğünde ise teknik olarak SSAO çalışıyordur ama göz fark etmez; yalnızca «önce / sonra» kıyasında ince fark görülür. Üretimde hedef genelde budur: gölgeleri fısıltı gibi hissettirmek, ana hikâyeyi basma riskini azaltmak. Şiddeti ayarlarken tek başına değil, sahne ortam ışığı ve son renk işlemleriyle birlikte bakmak en güvenli yoldur.
-
Bias (eşik payı).
Derinlik tamponu gerçek dünyada sürekli bir cetvel değildir; özellikle uzak mesafede veya çokgen kenarlarında küçük basamaklar ve sayısal gürültü olur. Algoritma, iki pikselin derinliği birbirine çok yakınsa «ikisi de aynı düz zeminde» varsaymalıdır; aksi halde düz zeminde sanal bir çukur bulundu sanılır. Bias tam bu «ne kadar yakın sayılır?» toleransını büyütür — gürültüyü yutar.
Tolerans çok açılırsa bu kez gerçek köşelerdeki küçük derinlik farkları da yutulur ve sığınak gölgeleri solar. Çok daralırsa düz zeminde ince çizgiler, titreme veya aralıklı gölgelenme (özellikle kamera hareket ederken) görünür. Bu yüzden bias çoğu projede ince ayar gibidir: sabit bir «doğru sayı» yoktur; sahne ölçeği ve derinlik tamponunun kalitesine göre oynanır.
Performans notu: SSAO ve ötesi
SSAO, tam çözünürlükte yoğun örnekleme ile pahalıdır; maliyet örnek sayısı ve çözünürlük ile birlikte büyür. Render target · performans bağlamında düşünülmelidir. Yaygın üretim pratikleri: düşük örnek sayısı + sonradan hafif bulanıklaştırma (blur pass) ile kumlanmayı (noise) dağıtmak; çözünürlüğü düşürülmüş tamponda hesaplayıp yükseltmek (upsample).
HBAO (Horizon-Based Ambient Occlusion) gibi yöntemler ufuk tabanlı integral ile daha stabil sonuç verebilir; genelde daha ağır GPU yükü veya farklı tampon okuma düzeni getirir — «her zaman daha iyi» değil, bütçe ve sahne tipine göre seçilir. Tam sahne GTAO / ışın takibi çözümleri ise web gerçek zamanlı hedefinde sıklıkla lüks kalır.
Holodepth teknik notu
SSAO ayıklamak için üç soru: (1) Derinlik tamponu tek mi, şeffaf yüzeylerde patlıyor mu? (2) Ortam ışığı ve ton sıkıştırması kararmayı sıfırlıyor mu — sıra ideal akış ile uyumlu mu? (3) Hareket halindeki titreme için temporal dengeleme veya örnek kalitesi yeterli mi? Yanlış sıra, parlaklık üstünde SSAO’yu «çöpe atan» bir renk işleminden ayırt edilemez.