Vertex ve fragment
- Oyun Geliştirme kursu
- İleri seviye
- Ders 5/71
- 4 dk
Vertex ve fragment fonksiyonlarının rollerini öğrenirsin.
Vertex Shader'ın Rolü
Vertex Shader, grafik boru hattının ilk programlanabilir aşamasıdır. 3D nesnenin her bir köşe noktası (vertex) için bir kez çalışarak köşeleri yerel model uzayından ekran izdüşüm uzayına taşır (MVP dönüşümü).
#pragma vertex vert
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}Dalgalanan bayraklar, rüzgarda eğilen ağaçlar veya karakter deformasyonları vertex shader aşamasında konum değiştirilerek yapılır.
Fragment Shader ve Piksel Renklendirme
Köşeler işlendikten sonra rasterizer aşaması yüzeyi ekrandaki piksellere (fragment) böler. Ardından Fragment Shader devreye girerek her bir pikselin nihai RGBA rengini hesaplar.
#pragma fragment frag
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.uv);
return col;
}Doku örnekleme, parlama efektleri, sis ve renk tonlamaları fragment shader aşamasında hesaplanarak monitöre yansıtılır.
Uygulama Vertex ve fragment boru hattı
Bir Start metodu tanımla. İçinde int vertexSayisi = 4; tanımla ve konsola "Kose sayisi: " + vertexSayisi yazdır.
Başlangıç kodu
using UnityEngine;
public class PipelineLogger : MonoBehaviour
{
// Start icinde vertexSayisi tanimla ve yazdir
}Örnek çözüm
using UnityEngine;
public class PipelineLogger : MonoBehaviour
{
void Start()
{
int vertexSayisi = 4;
Debug.Log("Kose sayisi: " + vertexSayisi);
}
}Beklenen çıktı
Kose sayisi: 4
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir 3D nesnenin köşe noktalarını model uzayından ekran izdüşüm uzayına dönüştürmekten hangi shader aşaması sorumludur?
- Fragment Shader
- Vertex Shader Doğru cevap
- Audio Mixer
- Collider2D
Açıklama: Köşe noktalarının konum dönüşümü ve geometrik deformasyonları Vertex Shader aşamasında gerçekleştirilir.
2 Fragment direktifi
#pragma ____ frag
#pragma fragment frag
Açıklama: Fragment shader fonksiyonunu derleyiciye bildirmek için '#pragma fragment' direktifi kullanılır.
3 Boru hattı kavramları
| Kavram | Anlamı |
|---|---|
Vertex Shader |
Köşe konumlarını dönüştürür |
Rasterizer |
Geometriyi piksellere böler |
Fragment Shader |
Piksel renklerini hesaplar |
SV_Target |
Nihai renk çıktısı semantiği |