CodeBlanks Logo Icon CodeBlanks

Surface Shader

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

Player.cs
using UnityEngine;

public class SurfaceLogger : MonoBehaviour
{
    // Start icinde aydinlatma degiskenini tanimla ve yazdir
}

Örnek çözüm

Player.cs
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

Soru
#pragma ____ surf Standard fullforwardshadows
Cevap
#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ı

İleri seviye bölümündeki tüm dersler