Surface Shader
- Oyun Geliştirme kursu
- İleri seviye
- Ders 3/71
- 4 dk
Surface Shader yapısını ve #pragma surface'i öğrenirsin.
Surface Shader Yapısı
Unity'nin Built-in Render Pipeline mimarisinde yer alan Surface Shader, karmaşık ışık ve gölge hesaplamalarını geliştirici adına otomatik olarak üstlenir. Düşük seviyeli ışık algoritmaları yazmak yerine yalnızca yüzey özelliklerini tanımlarsın.
CGPROGRAM
#pragma surface surf Standard fullforwardshadows
#pragma target 3.0
ENDCG#pragma surface direktifi derleyiciye yüzey fonksiyonunu ve kullanılacak aydınlatma modelini bildirir.
surf Fonksiyonu ve Yüzey Çıktıları
Surface Shader'ın merkezinde surf fonksiyonu yer alır. Bu fonksiyon girdi olarak UV koordinatlarını alır ve SurfaceOutputStandard yapısını doldurur.
void surf (Input IN, inout SurfaceOutputStandard o)
{
o.Albedo = float3(1.0, 0.5, 0.2); // Temel renk
o.Metallic = 0.5; // Metaliklik
o.Smoothness = 0.8; // Puruzsuzluk
}Burada belirlenen Albedo ve Smoothness gibi değerler, sahnedeki Directional Light ve Point Light ışıklarıyla otomatik olarak aydınlatılır.
Uygulama Surface Shader aydınlatma
Bir Start metodu tanımla. İçinde string aydinlatma = "Standard"; değişkenini tanımla ve konsola "Aydinlatma modeli: " + aydinlatma yazdır.
Başlangıç kodu
using UnityEngine;
public class SurfaceLogger : MonoBehaviour
{
// Start icinde aydinlatma degiskenini tanimla ve yazdir
}Örnek çözüm
using UnityEngine;
public class SurfaceLogger : MonoBehaviour
{
void Start()
{
string aydinlatma = "Standard";
Debug.Log("Aydinlatma modeli: " + aydinlatma);
}
}Beklenen çıktı
Aydinlatma modeli: Standard
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Surface Shader'da yüzey fonksiyonunu ve kullanılacak aydınlatma modelini bildiren derleme direktifi hangisidir?
- #pragma surface surf Standard Doğru cevap
- #pragma fragment frag
- #include "UnityCG.cginc"
- #define LIGHTING_ON
Açıklama: #pragma surface direktifi, yüzey fonksiyonunun adını (ör. surf) ve ışıklandırma modelini (ör. Standard) derleyiciye bildirir.
2 Surface direktifi
#pragma ____ surf Standard fullforwardshadows
#pragma surface surf Standard fullforwardshadows
Açıklama: Surface shader bildiriminde '#pragma surface' anahtar sözcüğü kullanılır.
3 Surface Shader öğeleri
| Kavram | Anlamı |
|---|---|
#pragma surface |
Yüzey fonksiyonu ve ışık modeli tanımı |
surf |
Yüzey özelliklerini dolduran fonksiyon |
Albedo |
Yüzeyin temel yansıma rengi |
SurfaceOutputStandard |
Standart fiziksel ışık çıktısı yapısı |