Deferred renderer abstraction

bi deferred renderer yapıyorum oyun motorumda, tek ışık için çalışan bi shadow pass de var
genel olarak bir renderer arayüzü nasıl olmalı

her pass için kullanılacak shader’ları var saymalı mıyım, her pass için gönderilecek uniformlar peki?

oyun motoru tasarımı veya genel olarak grafik programlamada yeniyim

soru eksik geliyorsa nasıl ekleme yaparım söyleyebilirseniz de güzel olur

Merhabalar,

Burada oyun motoru/grafik ile ugrasan var mi bilmiyorum (simdiye kadar cok konusu acilmadi) ama sahsen soru konusunda yardimci olabilirim belki.

Daha once deferred renderer yazmadigim icin sacma sorular olabilir. (Ama spesifik olarak bu konuyu bilmeyen, fakat muhtelif engine’ler gormus ve basit versiyonlarini yazmis biri olarak konusuyorum)

Arayuzden kasit programlama arayuzu, disariya verilen fonksiyonlar/siniflar+metodlar mi? Oyleyse en azindan dili bilmek, mevcut arayuzun neye benzedigini veya benzemesini istedigimizi bilmek faydali olacaktir.

Var saymaktan kasit nedir?
Uniform’lar -bildiginiz uzere- shader’lara ait seyler. Her shader’a ona ait uniform’lar gonderilmeli.
Ayni sahne birden fazla hedefe render ediliyorsa (renk, normal, vs.) ayni uniform degerlerine sahip olmali.

Onun disinda, iki pass arasindaki uniform’larin alakali olabilecegini dusunemiyorum? Ikinci pass sadece muhtelif (ful ekran renk, normal, vs.) texture’lari alip son pixel texture’unu uretiyor, degil mi? 3D → texture projeksiyonu yapan ilk pass shader’larindan gayet bagimsiz olmali gibi geliyor.


Belki genel renderer mimarisini anlatirsaniz tartismasi cok daha kolay olur. “Geometriyi ucgenler olarak alip renk ve normal texture’larina cizen iki shader programi, bir de ayni sahneye isik acisindan bakip shadow map cikartan ucuncu bir tane var. Ikinci pass’te bunlar tek bir program tarafindan birlestiriliyor.” gibi?

Uniform’lara ornek vermek de sorunun ona bagli kisimlarini anlamakta yardimci olabilir. Mesela en basit sahnede hangi uniform’lar kullaniliyor? En karmasik sahnede neler eklenebiliyor?

Kac tane degisik shader var, alakalari neler gibi bir ufak anlatim da olabilir.

Mesela dogru konuyu cevapladigimdan emin olmak icin baktigim sitelerden birinde soyle bir grafikle karsilastim:

Boyle bir graph’in uzerinde konusmak daha kolay. Elle gosterip “iki mavi arasindaki ok 3 texture alip 1 texture cikartan bir program” gibi seyler soylemek guzel oluyor.