Ashenfall SF | Devlog

Kaptan Yosun

Co-Co Admin
Moderatör
Geliştirici
Yardımsever Üye
Usta Üye
Mesaj
1.598
Çözümler
57
Beğeni
3.261
Puan
1.839
Ticaret Puanı
0

Ashenfall SF

Screenshot 2026-09-12 194842.webp
Hobi projem artık içime sinen bir hale geldiği için bu günlüğü açıyorum. Henüz gölgeler hariç bir görsel değişime gitmedim.

Temel özeliikler
Taban:
Genişlet Daralt Kopyala
* Mainline
* Visual Studio 2026
* Windows Server
* World Editor
* Tüm projeler 0 warning derlenir (Gizleme değil, tamamı düzeltildi)

Client Özellikleri
Client:
Genişlet Daralt Kopyala
* DirectX 11
* GPU Skinning
* 4 Kaskatlı CSM(Cascaded Shadow Mapping) Sistemi
* DirectXMath (https://github.com/microsoft/directxmath)
* Reverse-Z Floating Point Depth
* Screen-Space Dithered Occlusion Dissolve
* Dinamik Atmosfer & Gökyüzü: Hillaire Modeli, Gerçek Zamanlı Efemeris & Gece/Gündüz Döngüsü

Güncellemelerde görüşmek üzere
 
Son düzenleme:
Eski Metod (Uniform PCF)
shadow_uniformPCF.webp


Yeni Metod (Directional PCSS with Cascade-Gating)
Shadow_PCSS.webp

[Devlog] DirectX 11 Dinamik Gölge İyileştirmesi: Directional PCSS (Percentage-Closer Soft Shadows) & Contact Hardening

Ashenfall grafik hattında gölge gerçekçiliğini artırmak ve klasik CSM (Cascaded Shadow Maps) kurulumlarındaki yapay "karton gibi keskin" gölge görünümünü tamamen ortadan kaldırmak adına gölge filtreleme mimarisini baştan aşağı yeniledim.

Gölge hattına modern AAA motorların kullandığı hibrit bir Directional PCSS (Percentage-Closer Soft Shadows) ve IGN (Interleaved Gradient Noise) rotasyonlu Poisson filtreleme sistemi entegre ettim.

Geleneksel Gölgeler vs. PCSS Nedir?Klasik motorlarda (ve projenin eski gölge sisteminde) sabit bir filtre yarıçapı kullanılır; bu yüzden metrelerce yukarıdaki ağaç yaprağının gölgesi ile karakterin toprağa basan ayağının gölgesi tamamen aynı keskinlikte çizilir. Gerçek dünyada ise ışık kaynağının (güneşin) açısal çapından dolayı, nesne gölgenin düştüğü zeminden uzaklaştıkça gölgenin sınırları flulaşır (penumbra etkisi).

Görselde Neler Değişti? (Nereye Bakmalısınız?)
  • Ağaç Gövdesi ve Canopisi: Ağacın toprağa yakın olan kütük gölgesinin ne kadar keskin başladığına, yukarıdaki dallara ve yapraklara doğru çıktıkça zemine düşen gölgenin nasıl pürüzsüz ve kademeli bir şekilde dağılarak yumuşadığına dikkat edin.
  • Binek Temas Noktaları: Karakterin ve bineğin ayak diplerinde gölge kopması (peter-panning) yaşanmıyor; temas noktaları doğrudan yere oturuyor.
  • Yüksek Mimari Yapılar: Sağ taraftaki binanın çatısının yüksekte kalan saçak gölgeleri doğal bir yayılımla yumuşarken, alçak kısımlar netliğini koruyor.
Performans & Optimizasyon:Bu hesaplama GPU'da kontrolsüz çalıştırıldığında ağır bir blocker-search maliyeti doğurur. Bunu engellemek için mimariyi Cascade-Gating ile kurguladım:

  • Fiziksel penumbra hesaplaması yalnızca gözün detayları seçebildiği ilk iki kademede (Cascade 0 ve 1) tam blocker taramasıyla çalışıyor.
  • Uzak mesafeler (Cascade 2 ve 3) otomatik olarak donanım seviyesinde optimize edilmiş standart filtrelemeye düşüyor.
  • Doğrudan güneş alan açık alanlar için erken çıkış (early-out) optimizasyonu eklediğimden, gölge almayan bölgelerde doku okuma maliyetini yarı yarıya düşürdüm.
 
Son düzenleme:
1789119940337.webp

[Devlog] DirectX 11 Kamera Görüş & Engel Çözümü: Screen-Space Dithered Occlusion Dissolve
Ashenfall grafik hattında, kamerayla karakter arasına giren devasa mimari yapıların, binaların ve ağaçların görüşü kapatmasını engellemek adına kullanılan eski nesil PCBlocker sistemini tamamen motor dışına ittim. Yerine modern AAA oyunların (Unreal Engine 5 Dither Temporal AA, Guild Wars 2, modern ARPG'ler) kullandığı ekran uzayı tabanlı Screen-Space Dithered Occlusion Dissolve mimarisini entegre ettim.
Eski PCBlocker Neydi ve Neden Değişti?
Eski sistem, 2000'lerin başından kalma saf bir CPU hamallığıydı. Her karede kamera ile karakter arasına 4'lü dinamik küre zincirleri yerleştirip sahnede octree arayışına giriyor, engelleri topluyor, CPU'da sıralıyor ve önüne çıkan koskoca bir binayı zorla alpha_blend moduna sokarak ikinci bir geçişte (pass) çiziyordu.
Bu yaklaşımın oyuna iki büyük zararı vardı:
  • İç Mekan / Alpha-Sorting Patlaması: Şeffaf hale getirilen opak modellerin Z-Buffer sıralaması bozulduğu için, binanın dışından baktığınızda çatının altı, ters yüzeyler ve evin içi dışına çıkmış gibi görünüyordu (bunu gizlemek için eklenen depthBias = -20 gibi yamalar da cabasıydı).
  • Bütünsel Kaybolma: Binanın minicik bir köşesi kameraya değse bile koskoca yapı bir hayalet gibi komple silikleşiyordu.
Yeni Sistem Nasıl Çalışıyor? (Görselde Neler Değişti?)
  • Parçacık/Piksel Seviyesinde Delinebilirlik: Artık binanın tamamı şeffaflaşmıyor. Kamera ile oyuncu arasında matematiksel bir 3D kapsül tanımlanıyor. Sadece görüş hattını fiziksel olarak kesen pikseller, ekran uzayında $8\times 8$ Bayer matrisi eşliğiyle dither edilerek (clip()) eritiliyor. Binanın geri kalan %90'lık gövdesi tamamen katı, gölgeli ve opak kalıyor.
  • Ters Yüzeyler Asla Görünmüyor: Sistem klasik şeffaflık (alpha blend) yerine standart opak çizim hattında çalıştığı için derinlik tamponu (Z-write) korunuyor. Binanın çatısının altını veya iç odalarını asla görmüyorsunuz; nesneler kendi kendini kusursuz şekilde kapatmaya devam ediyor.
  • Binek ve Karakter Muafiyeti: Yerel oyuncu ve bindiği binek çizilirken özel bir işlem hattı muafiyeti devreye giriyor. Bir duvara sıfır yanaşsanız bile bineğinizin kafası veya gövdesi kapsülün içine girip delinmiyor; çevre açılırken binek net ve kusursuz kalıyor.
  • Gölge Bütünlüğü: Nesnenin kamera önünde dither ile erimesi, sadece ana ekrandaki görüş için geçerli. Işık kamerasının derinlik geçişlerinde bu kod devre dışı bırakıldığı için, binanın yere düşürdüğü gölgede hiçbir delinme veya yırtılma yaşanmıyor.
Performans & Optimizasyon:
Eski sistemin 33 dosyaya yayılmış yüzlerce satırlık CPU octree aramaları, dynamic_cast döngüleri ve $O(n^2)$ arama yapan algoritmaları tamamen silindi.
  • Sıfır CPU Yükü: Kamera ve oyuncunun dünya pozisyonu tek bir sabit tampon (cbuffer) üzerinden GPU'ya paslanıyor; CPU tarafında tek bir raycast veya küre çakışma testi dahi koşturulmuyor.
  • GPU Erken Çıkışı (Branch Coherency): Kapsülün dışında kalan ekranın büyük çoğunluğunda algoritma daha ilk skaler karşılaştırmada erken çıkış yapıyor. Kapsülün içine düşüp clip() edilen pikseller ise arkasından gelecek ağır ışık ve gölge hesaplamalarına hiç girmeden donanım seviyesinde atıldığı için kart üzerinde ölçülemeyecek kadar nötr bir maliyetle (~0.02 ms) çalışıyor.
 


[Devlog] DirectX 11 Dinamik Atmosfer & Gökyüzü: Hillaire Modeli, Gerçek Zamanlı Efemeris & Gece/Gündüz Döngüsü
Ashenfall grafik hattında, oyunun 2000’lerin başından kalma statik "kutu gökyüzü" (skybox) devrini tamamen kapattım. Oyundaki tüm 6 yüzeyli sahte küp dokuları, harita başına hardcoded girilmiş ışık/sis ayarlarını ve arka planda dönen statik ortam kodlarını kökünden kazıyarak projeden temizledim.
Yerine, modern AAA motorların (Unreal Engine SkyAtmosphere mimarisi) temelini oluşturan Sébastien Hillaire (EGSR 2020) fiziksel atmosfer modelini ve bilimsel gök cismi efemerislerini entegre ettim.

Eski Statik Skybox Neydi ve Neden Çöpe Gitti?​

Eski sistem kamerayı takip eden basit bir 3D küp ve üzerine yapıştırılmış 6 adet .dds dokusundan ibaretti.
  • Zaman Algısı Yoktu: Fotoğrafı çekilmiş saat kaçsa gökyüzü hep oydu; güneş hareket etmez, geceye geçişler sadece sahneyi yapay bir siyah/mavi renkle karartarak taklit edilirdi.
  • Kopuk Zemin: Gökyüzünün aydınlığı ile yerdeki arazinin ve gölgelerin ışık açısı birbirinden tamamen bağımsızdı.
  • Çiğ Sis: Uzaktaki dağlar derinlik kazanmak yerine tek ton çiğ bir renge boyanarak boğuluyordu.

Yeni Sistem Nasıl Çalışıyor? (Bilimsel Arka Plan)​

Artık oyunda tek bir piksel bile boyanmış gökyüzü dokusu bulunmuyor; gökyüzü tamamen gerçek zamanlı fizik ve atmosferik saçılma simülasyonuyla matematiksel olarak anlık üretiliyor.
  • %0.001 Hata Payıyla Astronomik Yörüngeler:
    Güneş’in gökyüzündeki hareketi NOAA (Amerikan Ulusal Okyanus ve Atmosfer İdaresi) güneş konumu algoritmasıyla; Ay’ın konumu, topomerkezli paralaksı ve anlık evreleri (hilal, dolunay) ise Paul Schlyter astronomik efemeris formülleriyle hesaplanıyor. Saat kaçsa, Güneş ve Ay gökyüzünde milimetrik gerçek koordinatında yer alıyor.
  • Fiziksel Saçılma (Rayleigh & Mie):
    Atmosferimiz Dünya standartlarında 6360 km gezegen ve 60 km hava katmanı kalınlığıyla modelleniyor. Havanın moleküler yapısı mavi ışığı daha çok saçtığı için (1 / lambda^4) gökyüzü gündüz masmavi; ufukta yol uzayıp maviler tükendiğinde ise gün batımı kendiliğinden kızıla dönüyor. Güneşin etrafındaki göz alıcı hale ise Mie faz fonksiyonu (g = 0.8) ile toz ve aerosollerin ışığı öne fırlatmasıyla oluşuyor.
  • Stratosferik Ozon Tabakası:
    Modelde 25 km yükseklikte bir ozon katmanı simüle ediliyor. Alacakaranlıkta güneş ufkun altına indiğinde gökyüzünün çamurlu bir gri yerine büyüleyici bir gece maviliğine bürünmesini sağlayan şey, ozonun kırmızı/sarı dalga boylarını emmesidir.
  • Çoklu Saçılma (Multiple Scattering):
    Işığın sadece bir kere değil, atmosferde ve yeryüzünde defalarca sekerek dağların arkasındaki gölgeleri gökyüzü mavisiyle doldurması analitik bir geometrik seriyle (L_total = L_2 / (1 - f_ms)) hesaplanıyor. Gölgeler zifiri siyah kalmıyor, doğal bir ortam ışığıyla (ambient fill) nefes alıyor.
  • Kusursuz Radyometrik Toplam (Radyans Eşitliği):
    Sabah güneş doğarken gökyüzünün aniden siyaha düşmesini engellemek için radyometri kurallarına (L_total = L_sun + L_moon) sadık kaldım. Güneş doğarken tepedeki ay ışığı kesilip atılmıyor; iki gök cisminin yaydığı fotonlar atmosferde toplanarak gün doğumunu sıfır görsel sıçramayla devrediyor.

Videoda Neler Değişti? (Nereye Bakmalısınız?)​

  • Uzak Dağlar ve Hava Perspektifi (Aerial Perspective):
    Eski yapay mesafe sisi tamamen kalktı. Dağlar ile kamera arasındaki yüzlerce metrelik havanın kalınlığı derinlik tamponundan (Depth) taranarak fiziksel olarak araya giriyor; uzaktaki tepeler gerçek dünyadaki gibi atmosferik pusa gömülüyor.
  • Güneş Diski ve Ufuk Kızıllığı:
    Güneş gökyüzünde boyalı bir resim değil, açısal çapı (0.5 derece) doğrultusunda analitik olarak parıldayan bir küre. Ufka yaklaştıkça ışınların geçtiği hava yolu 400 km'ye çıktığı için diskin kendisi sarıdan turuncuya ve kızıla dönerek batıyor.
  • Dinamik Gölgeler ile Kusursuz Uyum:
    Yönsel PCSS gölge kaskadlarımız (CSM) artık doğrudan NOAA güneş vektörüne bağlı. Gün batımında binek ve bina gölgelerinin ufka doğru dramatik şekilde uzamasını, çoklu saçılma sayesinde gölge içlerinin yumuşacık bir mavi dolgu ışığı almasını izleyebilirsiniz.

Performans & Optimizasyon:​

Bu kadar ağır atmosferik integralleri 60 FPS'te ekran çözünürlüğünde koşturmak GPU'yu anında kilitlerdi. Sistemi Hillaire'in 4'lü LUT (Lookup Table) mimarisiyle sıfır darboğaz seviyesine çektim:
  • Çözünürlükten Bağımsız Sabit Yük: Gökyüzü 2 milyon piksel için ayrı ayrı ray-march edilmiyor. Her kare yalnızca 192 x 108 boyutundaki küçücük bir Sky-View LUT dokusuna marş ediliyor.
  • Tek Geçişte Fullscreen Triangle: Ekrana çizim aşamasında opak geometrilerden hemen sonra tek bir dev üçgenle (VFMT_NONE, sıfır vertex buffer masrafı) girilip derinlik tamponu taranıyor; gökyüzü olan yerlere tablodan doğrudan doku okunarak işlem kapatılıyor.
  • Önbellek Tabloları: Geçirgenlik (256 x 64) ve Çoklu Saçılma (32 x 32) tabloları sadece gezegen parametreleri değiştikçe bir defa üretiliyor; her kare sıfır maliyetle çalışıyor.
  • Sistemin D3D11 üzerindeki toplam ek maliyeti 0.2 ms'nin altındadır.
 


[Devlog] DirectX 11 Dinamik Atmosfer & Gökyüzü: Hillaire Modeli, Gerçek Zamanlı Efemeris & Gece/Gündüz Döngüsü
Ashenfall grafik hattında, oyunun 2000’lerin başından kalma statik "kutu gökyüzü" (skybox) devrini tamamen kapattım. Oyundaki tüm 6 yüzeyli sahte küp dokuları, harita başına hardcoded girilmiş ışık/sis ayarlarını ve arka planda dönen statik ortam kodlarını kökünden kazıyarak projeden temizledim.
Yerine, modern AAA motorların (Unreal Engine SkyAtmosphere mimarisi) temelini oluşturan Sébastien Hillaire (EGSR 2020) fiziksel atmosfer modelini ve bilimsel gök cismi efemerislerini entegre ettim.

Eski Statik Skybox Neydi ve Neden Çöpe Gitti?​

Eski sistem kamerayı takip eden basit bir 3D küp ve üzerine yapıştırılmış 6 adet .dds dokusundan ibaretti.
  • Zaman Algısı Yoktu: Fotoğrafı çekilmiş saat kaçsa gökyüzü hep oydu; güneş hareket etmez, geceye geçişler sadece sahneyi yapay bir siyah/mavi renkle karartarak taklit edilirdi.
  • Kopuk Zemin: Gökyüzünün aydınlığı ile yerdeki arazinin ve gölgelerin ışık açısı birbirinden tamamen bağımsızdı.
  • Çiğ Sis: Uzaktaki dağlar derinlik kazanmak yerine tek ton çiğ bir renge boyanarak boğuluyordu.

Yeni Sistem Nasıl Çalışıyor? (Bilimsel Arka Plan)​

Artık oyunda tek bir piksel bile boyanmış gökyüzü dokusu bulunmuyor; gökyüzü tamamen gerçek zamanlı fizik ve atmosferik saçılma simülasyonuyla matematiksel olarak anlık üretiliyor.
  • %0.001 Hata Payıyla Astronomik Yörüngeler:
    Güneş’in gökyüzündeki hareketi NOAA (Amerikan Ulusal Okyanus ve Atmosfer İdaresi) güneş konumu algoritmasıyla; Ay’ın konumu, topomerkezli paralaksı ve anlık evreleri (hilal, dolunay) ise Paul Schlyter astronomik efemeris formülleriyle hesaplanıyor. Saat kaçsa, Güneş ve Ay gökyüzünde milimetrik gerçek koordinatında yer alıyor.
  • Fiziksel Saçılma (Rayleigh & Mie):
    Atmosferimiz Dünya standartlarında 6360 km gezegen ve 60 km hava katmanı kalınlığıyla modelleniyor. Havanın moleküler yapısı mavi ışığı daha çok saçtığı için (1 / lambda^4) gökyüzü gündüz masmavi; ufukta yol uzayıp maviler tükendiğinde ise gün batımı kendiliğinden kızıla dönüyor. Güneşin etrafındaki göz alıcı hale ise Mie faz fonksiyonu (g = 0.8) ile toz ve aerosollerin ışığı öne fırlatmasıyla oluşuyor.
  • Stratosferik Ozon Tabakası:
    Modelde 25 km yükseklikte bir ozon katmanı simüle ediliyor. Alacakaranlıkta güneş ufkun altına indiğinde gökyüzünün çamurlu bir gri yerine büyüleyici bir gece maviliğine bürünmesini sağlayan şey, ozonun kırmızı/sarı dalga boylarını emmesidir.
  • Çoklu Saçılma (Multiple Scattering):
    Işığın sadece bir kere değil, atmosferde ve yeryüzünde defalarca sekerek dağların arkasındaki gölgeleri gökyüzü mavisiyle doldurması analitik bir geometrik seriyle (L_total = L_2 / (1 - f_ms)) hesaplanıyor. Gölgeler zifiri siyah kalmıyor, doğal bir ortam ışığıyla (ambient fill) nefes alıyor.
  • Kusursuz Radyometrik Toplam (Radyans Eşitliği):
    Sabah güneş doğarken gökyüzünün aniden siyaha düşmesini engellemek için radyometri kurallarına (L_total = L_sun + L_moon) sadık kaldım. Güneş doğarken tepedeki ay ışığı kesilip atılmıyor; iki gök cisminin yaydığı fotonlar atmosferde toplanarak gün doğumunu sıfır görsel sıçramayla devrediyor.

Videoda Neler Değişti? (Nereye Bakmalısınız?)​

  • Uzak Dağlar ve Hava Perspektifi (Aerial Perspective):
    Eski yapay mesafe sisi tamamen kalktı. Dağlar ile kamera arasındaki yüzlerce metrelik havanın kalınlığı derinlik tamponundan (Depth) taranarak fiziksel olarak araya giriyor; uzaktaki tepeler gerçek dünyadaki gibi atmosferik pusa gömülüyor.
  • Güneş Diski ve Ufuk Kızıllığı:
    Güneş gökyüzünde boyalı bir resim değil, açısal çapı (0.5 derece) doğrultusunda analitik olarak parıldayan bir küre. Ufka yaklaştıkça ışınların geçtiği hava yolu 400 km'ye çıktığı için diskin kendisi sarıdan turuncuya ve kızıla dönerek batıyor.
  • Dinamik Gölgeler ile Kusursuz Uyum:
    Yönsel PCSS gölge kaskadlarımız (CSM) artık doğrudan NOAA güneş vektörüne bağlı. Gün batımında binek ve bina gölgelerinin ufka doğru dramatik şekilde uzamasını, çoklu saçılma sayesinde gölge içlerinin yumuşacık bir mavi dolgu ışığı almasını izleyebilirsiniz.

Performans & Optimizasyon:​

Bu kadar ağır atmosferik integralleri 60 FPS'te ekran çözünürlüğünde koşturmak GPU'yu anında kilitlerdi. Sistemi Hillaire'in 4'lü LUT (Lookup Table) mimarisiyle sıfır darboğaz seviyesine çektim:
  • Çözünürlükten Bağımsız Sabit Yük: Gökyüzü 2 milyon piksel için ayrı ayrı ray-march edilmiyor. Her kare yalnızca 192 x 108 boyutundaki küçücük bir Sky-View LUT dokusuna marş ediliyor.
  • Tek Geçişte Fullscreen Triangle: Ekrana çizim aşamasında opak geometrilerden hemen sonra tek bir dev üçgenle (VFMT_NONE, sıfır vertex buffer masrafı) girilip derinlik tamponu taranıyor; gökyüzü olan yerlere tablodan doğrudan doku okunarak işlem kapatılıyor.
  • Önbellek Tabloları: Geçirgenlik (256 x 64) ve Çoklu Saçılma (32 x 32) tabloları sadece gezegen parametreleri değiştikçe bir defa üretiliyor; her kare sıfır maliyetle çalışıyor.
  • Sistemin D3D11 üzerindeki toplam ek maliyeti 0.2 ms'nin altındadır.

Deneysel, zevksiz dx11 lerin yanında 10 numara mal olmuş. Bu iş birazda sanat işi herhalde gördüğün şeyin kalitesini anlayarak yapılan işler kaliteli duruyor. Kaliteli işin ne olduğunu bilmeden kodları dx11e geçirme amelelikleri yerine sizler çoğalırsınız ins. Merakla takip ediyorum güzel konu.
 


[Devlog] Atmosferik Aydınlatmada Yeni Çağ: Froxel Tabanlı Hacimsel Sis ve Işık Hüzmeleri (Godrays)

Motorun aydınlatma ve atmosfer boru hattında uzun süredir üzerinde çalıştığım en kritik grafik güncellemelerinden birini tamamladım. Eski nesil, kamerayı çevirdiğiniz an kaybolan ekran uzayı (screen-space radial blur) hilelerini tamamen terk ederek modern AAA yapımların kullandığı endüstri standardı Froxel (Frustum-Aligned Voxel Grid) hacimsel aydınlatma mimarisini Direct3D 11 motoruma entegre ettim.

Mimari ve Çalışma Prensibi (Frostbite / Hillaire Modeli)
Sistemi Sébastien Hillaire’in (SIGGRAPH 2015, Frostbite) fiziksel tabanlı hacimsel modelini referans alarak inşa ettim:
  • 3D Frustum Izgarası (160 x 90 x 64): Kamera konisi içine yerleşen, derinliği logaritmik olarak artan bir 3D doku tahsis ettim. Işık hesaplaması piksel piksel ray-marching ile değil, doğrudan GPU Compute Shader (cs_5_0) üzerinde bu ızgara hücrelerine paralel olarak enjekte ediliyor.
  • CSM & SpeedTree Etkileşimi: Güneş ışığı froxel hücrelerine işlenirken sahnedeki Cascaded Shadow Maps (CSM) derinliğiyle çarpışıyor. Bu sayede arkadaki pagodaların çatılarından ve SpeedTree ağaçlarının dalları arasından süzülen ışık şeritleri havada fiziksel olarak kesilip yere dökülüyor.
  • Fiziksel Faz Fonksiyonu (Henyey-Greenstein): İleri saçılma ($g = 0.6$) modeli sayesinde güneşe doğru baktığınızda ışık hüzmeleri yoğunlaşıp parıldarken, arkanızı döndüğünüzde atmosfer dengeli ve doğal bir derinlik pusu sunuyor.
  • Titreşimsiz Snap & Reverse-Z: Kamera hareket ettikçe hacim dilimlerinin titremesini önlemek için dünya koordinatlarında çift duyarlıklı (double) sub-texel kilitleme uyguladım. Motorun Reverse-Z derinlik yapısıyla tam uyumlu çalıştığı için geometri kesişimlerinde sıfır dikiş izi oluşuyor.
  • Linear-Space sRGB Compositing: Hacimsel sisi sahneye eklerken renklerin çamurlaşmaması ve kontrast kaybı yaşanmaması için arka tampona sRGB Render Target View üzerinden doğrusal (linear) harmanlama ile basıyorum.
Performans
Tüm bu hacimsel enjeksiyon, gölge örneklemesi ve ışın entegrasyonu tamamen asenkron Compute Shader geçişleriyle optimize edildi. Ekran görüntüsünde gördüğünüz tüm hacimsel sis ve ışık hüzmelerinin toplam GPU maliyeti yalnızca ~0.6 - 0.8 ms seviyesinde kilitli kalıyor.

Köy meydanından, köy kapısının ve ağaçların arasından süzülen altın sarısı seher ışıklarının oyun içi karesini yukarıda görebilirsiniz.
 
Son düzenleme:
Geri
Üst