Shader Graph 10 Sürümü Yenilikleri arasında ufak arayüz güncellemeleri ve debug için bazı kolaylaştırmalar bulunuyor. Şayet daha önceki shader graph sürümlerini kullanıp, 10 sürümüne geçtiğinizde ufak bir afallama yaşadıysanız, bu yazımız bilgileri toparlama konusunda size yardımcı olacaktır. Daha önce hiç shader graph kullanmadıysanız da, temel mantığı için “Unity Shader Graph” yazımıza göz atabilirsiniz. Bunun dışında, tabii ki her zaman güncel Shader Graph dokümanlarına bakarak da bilgi edinmeniz mümkün.
10 sürümü ile beraber, herhangi bir shader oluşturduğunuzda, ki ben Shader > Universal Render Pipeline > Lit seçeneğiyle oluşturdum, aşağıdaki gibi bir yapı ile karşılaşacaksınız.

Öncelikle, varolan yapıda, hâlâ aynı kalan şeylerden bahsedelim. Main Preview, Blackboard ve Graph Inspector pencereleri hâlâ duruyor, hiçbir yere gitmediler. Ufak bir değişiklik olarak, yarattığımız değişkenlerin özelliklerini direkt olarak Blackboard üzerinden değiştirebiliyorken, Shader Graph 10 sürümü yenilikleri ile bu özellikler, Graph Inspector paneli altına geçmiş bulunuyor.
Önceden Shader Graph kullandıysanız, dikkatinizi çekmiştir, tek bir main node yerine, 2 adet node bulunmakta. Bunlar Vertex ve Fragment isimleriyle belirtilmiş. Daha öncesinde Master Node ismiyle tek bir node kullanılıyorken, artık Master Stack isimli bir yapı kullanılıyor. Vertex kısmı, mesh yapısında değişiklikler yapmak istediğimiz zaman kullanacağımız position, normal, tangent değerlerini içeriyor. Fragment kısmı ise, materyal dokusuna dair, örneğin renk, görünürlük vb alanları içerisinde bulunuyor.
Önceki tek Master Node yapısına göre içerik olarak değişiklik yok. Ancak isterseniz kullanmayacağınız input seçeneklerini silmeniz veya yenilerini eklemeniz artık mümkün. Örneğin Vertex işlemleri yapmayacaksınız, bunların el altında olmasına gerek yok, istediğiniz nodeları seçip “Delete” tuşuna basarak veya sağ tıklayıp “Delete” seçeneğini seçerek kaldırmanız mümkün. Aynı şekilde, Vertex kısmı seçili iken space tuşu veya sağ tıklama ile yeni node yapıları eklemeniz de mümkün. Aşağıdaki görselde silme ve ekleme işlemlerini nasıl yapacağımızı görebilirsiniz.

Graph Inspector paneline gelecek olursak, daha öncesinde genel olarak yarattığımız shader graph özelliklerini belirlediğimiz kısımdı. Bununla beraber artık değişkenler ve kullandığımız node bileşenlerinin özelliklerini de bu panel altında değiştirebiliyoruz. Aslında böylece daha derli toplu bir arayüz sunulduğunu söylemek de mümkün. Her bir node üzerinden açılan ayarlar paneli yerine, artık her işlem için farklı bölümler bulunuyor.
Graph Inspector altında, 2 adet sekme bulunmakta. Bu sekmelerden ilki olan “Node Settings” kısmında, az önce de bahsettiğim gibi, değişkenler ve node özelliklerini görebiliyoruz. Bir diğer sekme olan “Graph Settings” ise, bahsettiğimiz gibi, Lit-Unlit veya Metallic-Specular gibi shader özelliklerini değiştirmemize imkan sağlıyor. Graph Inspector altında bulunan 2 sekmenin görünümünü görselde görebilirsiniz. Soldaki görselde yaratmış olduğum “Color” tipindeki bir değişkenin özelliklerini “Node Settings” altında görüp değiştirebiliyor iken, shader özelliklerini ise “Graph Settings” altında değiştirebiliyorum.

Hazır bu görseli vermişken, bir de bunlar içerisinde bulunan alanların ne işe yaradığını da açıklamakta fayda var diye düşünüyorum. Öncelikle “Graph Settings” altında bulunan alanlara bir göz atalım.
Precision: Shader üzerinde işlemler yapılırken, ne kadar hassasiyet ile gerçekleştirmemizi istediğimizi belirttiğimiz alan.
Target Settings: Shaderınızın çalışmasını istediğiniz render ayarlarını belirlediğiniz kısım. Örneğin URP ve VisualEffects için shader oluştarabilirsiniz. Veya aynı şekilde URP ve HDRP hedefleyen bir shader yaratabilirsiniz. Eklediğiniz ortamlara göre devamında ayarlarda değişecektir. Asıl konumuz Render Pipeline olmadığı için bu yazıda bu detaylara girmeyeceğim.
Şimdi “Node Settings” altındaki alanların ne olduklarına bir bakalım. Aşağıda listelediklerim her değişken tipinde varolan özellikler. Bunlar dışında, örneğin “Color” tipinde HDR ayarı açmak veya “float” tipinde slider halinde olmasını sağlamak gibi ayarlar bulunuyor ancak onlara burada yer vermiyorum, yoksa yazımız fazlasıyla uzayacak. Farklı tipler ile değişkenler yaratarak hangi farklı özelliklere sahip olduklarına göz atmak da iyi bir pratik olacaktır.
Name: Değişkenimizin editor üzerinde gözükecek olan ismi.
Reference: Shader ile yarattığımız materyallerde, bu değişkeni kod üzerinden değiştirmek istersek ihtiyacımız olan değişken, referans isim.
Default: Oluşturduğunuz değişkenin hiçbir değer atanmama durumunda sahip olacağı değeri belirttiğimiz alan.
Precision: Aynı alan Graph Settings altında da bulunmakta. Şayet node için “inherit” seçeneğini seçerseniz, yarattığınız graph hangi ayarı kullanıyorsa, node da aynı ayarı kullanacaktır.
Exposed: True veya false olarak belirlediğimiz bu seçenek, değişkeninizi editor üzerinde, materyal görünümünde görünebilirlik durumunu belirtir.
Son olarak şunu eklemekte de fayda var. Daha öncesinde yarattığımız Shader Graph dosyaları ile yaratılan shader kodlarını, master node üzerinden, sağ tıklayıp görebiliyorduk. Ancak Shader Graph 10 sürümü ile, dosyanızı seçip, Inspector paneli üzerinden “View Generated Shader” butonuna tıklamanız yeterli olacaktır.
Evet, temel olarak aslında yeni olan şeylere böylece değinmiş oldum. Arayüz değişikliği olsa da çalışma prensibinde çok fazla şey değişmiş halde değil. Yeniliklerden, değişimlerden korkmamak lazım hem 🙂 Yeni sistemi de kullandığımız shader graph videolarıma bakmak isterseniz diye şöyle linkini bırakıyorum.
Ayrıca, Unity’nin kendi Shader Graph 10 sürümü yenilikleri videosunu da bırakayım, merak edenler onu da izleyebilsin.
Bir dahaki yazıda görüşmek dileğiyle, kendinize iyi bakın.