Seagazer'ın pruva köpüğünde partikül yok: Godot'ta okyanus shader'ını paylaşan iki mesh

Godot ile yapılan yelken oyunu Seagazer'ın geliştiricisi, pruvadaki su köpüğünü partikül kullanmadan, okyanusun kendi shader kodunu çalıştıran ve vertex shader'da bükülen iki mesh yüzeyiyle nasıl yaptığını adım adım anlattı.

Görsel: Seagazer (Steam)

Godot ile geliştirilen yelken oyunu Seagazer'ın geliştiricisi, Bluesky'daki altı gönderilik bir dizide oyundaki pruva köpüğünün (bow spray) nasıl çalıştığını anlattı. Efektte partikül yok: iki mesh yüzeyi okyanusun kendi shader kodunu çalıştırıyor ve bir vertex shader'da şekle bükülüyor.

Okyanusla aynı ışık

Yüzeylerin shader'ı okyanusun fragment kodunu içeriyor; tek bir define okyanusa özgü özellikleri kapatıp bir köpük dudağı ekliyor. Her karede ikisinin paylaştığı yaklaşık 170 uniform kopyalanıyor. Bu sayede köpük her zaman okyanusun ışığını, parıltısını ve günün saatini taşıyor.

Tekne ve pruva köpüğü öğlen, lavanta rengi akşam ışığında ve gece yarısı. Köpük rengini ve ışığını her birinde okyanustan alıyor.
Tekne ve pruva köpüğü öğlen, lavanta rengi akşam ışığında ve gece yarısı. Köpük rengini ve ışığını her birinde okyanustan alıyor.Görsel: Seagazer (Bluesky)

Şekil vertex shader'dan

Her yüzey 64 × 24'lük bir ızgarayla başlıyor. Vertex shader her köşeyi kendi UV'sinden kuruyor: iki ucu sıkıştırılmış, dudakta kıvrılan, ilerleyen tepelerle dalgalanan bir biçim. En yüksek hızda bir yüzey 17,4 metre uzunluğunda ve 5,7 metre yüksekliğinde.

Gri ızgaralı zeminde tekne; köpüğü, gövde boyunca yükselip kıvrılan 12'ye 8 dörtgenlik kaba beyaz tel kafes olarak çizilmiş.
Gri ızgaralı zeminde tekne; köpüğü, gövde boyunca yükselip kıvrılan 12'ye 8 dörtgenlik kaba beyaz tel kafes olarak çizilmiş.Görsel: Seagazer (Bluesky)

Gövdenin dışında kalmak

Yüzeylerin kökünü gövdenin dışında tutmak için 23 düzlemden oluşan bir gövde yerine geçeni ve her yanda 17 su örneği kullanılıyor. Geliştiricinin anlattığına göre "içeride mi, dışarıda mı?" diye sormak kökü zıplatıyordu: su yüksekliğindeki 1 milimetrelik bir değişiklik kökü 9,44 metre oynatıyordu. Her düzleme olan uzaklığı ölçmek bu oynamayı 2 milimetreye indirdi.

Gri ızgarada sert bir dönüşte yatmış tekne; iki köpük yüzeyi gövdeden dışa açılıyor, kökleri yine gövdenin dışında.
Gri ızgarada sert bir dönüşte yatmış tekne; iki köpük yüzeyi gövdeden dışa açılıyor, kökleri yine gövdenin dışında.Görsel: Seagazer (Bluesky)

Hız ve damlalar

Tepelerin hızı sin(time * speed) yerine her karede biriktirilen bir fazdan geliyor; böylece tekne hızlandığında hiçbir şey sıçramıyor. Damlalar tek bir MultiMesh içindeki 48 küre; okyanus shader'ı her birinin düştüğü yerde suda bir halka oluşturuyor. Geliştirici, efektin uzun seyirlerde köpüğü süründüren bir kayan nokta hassasiyeti hatası dahil Jettelly'nin blogunda ayrıntılı olarak yazıldığını da belirtiyor.

Seagazer

Steam sayfasına göre Seagazer, Sanderling'in geliştirip yayımladığı kısa, tek oyunculu bir yelken macerası: oyuncu yalnızca bir pusulayla resimsi, cel-shaded bir okyanusta şafaktan yıldızlı geceye yol alıyor. Çıkış tarihi şimdilik "pek yakında".

1
Bu haberi paylaşİşine yarayacak biri varsa ona da ulaşsın.

0 yorum

Hoş Geldin!

Oyun yapımındaki ekip kaosunu biliyoruz. İşte bu yüzden Devchaos var!

Devchaos, oyun geliştiricileri için kurulan bir topluluk ve iş birliği platformudur. Burada ekip arkadaşları bulabilir, projelerini paylaşabilir, anketler oluşturabilir, forumlarda etkinlik gösterebilir, yorum yapabilir, tester bulabilir ya da olabilirsin. Ayrıca gelişim sürecini takip etmek için Devlog Timeline seni bekliyor.

İlk 100 üyeye özel ayrıcalıklar!Üye olup toplulukta aktif olan ilk 100 kişi özel rozet, benzersiz profil seçenekleri ve sürpriz avantajlar kazanacak. Yalnızca üye olmak yetmez: paylaş, yaz, üret!
Hemen katıl ve yerini al!