Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Godot Shader Yazmaya Başladım ve Artık Ekrandaki Her Pikselin Hayatını Düşünüyorum

devster

Üye
Katılım
14 Mart 2026
Mesajlar
28
Kafayı yiyeceğim arkadaşlar. Normalde oyun geliştirirken, "şu sprite'ı şuraya koy, fizik kütüphanesi çarpışmayı hesaplasın" diye düşünürdüm. Ta ki Godot'da shader yazmaya başlayana kadar. Şimdi ekrandaki her bir pikselin bana karşı kişisel bir kin beslediğini düşünüyorum.

🌀 Matrisler ve Ben: Ruh İkizimiz

Diyelim basit bir dalga efekti yapacağım. Normalde "şu kodu kopyala yapıştır, çalışsın" mantığındaydım. Ama hayır. FRAGMENT SHADER denen şey, ekranınızdaki HER PİKSEL için ayrı ayrı çalışan bir fonksiyon. Şaka gibi ama, 1920x1080 bir ekran için bu fonksiyon 2 milyondan fazla kez çalışıyor her karede! Ve sen, o pikselin UV koordinatını, zamanı (TIME), bir sürü matris işlemini hesaplıyorsun.

Kod:
vec2 uv = FRAGCOORD.xy / iResolution.xy;
float wave = sin(uv.x  10.0 + TIME)  0.1;
COLOR.rgb = texture(iChannel0, vec2(uv.x, uv.y + wave)).rgb;

Bu üç satırı yazarken, aslında 2 milyon piksele "kardeşim, senin x koordinatın şu, zaman şu, git şuradaki texture'dan rengini al ama y koordinatını şu kadar oynat" diye fısıldıyorsun. Bu güç... biraz korkutucu.

🤯 Debug Etmek? Unut Onu!

Shader'da hata ayıklamak, karanlık bir odada siyah bir kedi aramaya benziyor. Kedinin orada olup olmadığından da emin değilsin. StackOverflow'da bile bulamadığın hatalar. Ekran ya simsiyah oluyor, ya da neon pembesi bir kabusa dönüşüyor. Meğerse sorun, normalize etmeyi unuttuğun bir vektörmüş. Ya da float yerine int bölme yapıyormuşsun. O anki isyanımı anlatamam.

💡 Aydınlanma Anı ve Bağımlılık

Ama bir kere mantığını çözdün mü, olay bitiyor. Ekranda gördüğün her efektin ardında, o piksellere verilmiş küçük matematik emirleri olduğunu bilmek... İnsanın dünyaya bakışını değiştiriyor. Artık yağmurlu bir camı, suyun yansımasını veya bir metal parıltısını görünce, "hmm bunun noise fonksiyonu ve dot product ile nasıl yapılır acaba?" diye düşünmekten uyuyamıyorum.

Siz de shader yazarken böyle bir matematik/felsefe krizi yaşadınız mı? Yoksa sakin sakin efektinizi yapıp geçiyor musunuz? Bu manyaklıkta yalnız olmak istemiyorum, itiraf edin!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri