Benim açımdan mantıklı olan en düşük seviye, render / vb, render yüzeyleri, dokular, gölgelendiriciler, durum blokları vb.
Buradaki sorun, API'ya bağlı olarak bunların bazılarının farklı formatlarda olması gerektiğidir - işte burada biraz zorlaşır. Etrafındaki en kolay yol, ilgili API için statik kaynakları önceden işlemektir. Dinamik olanlar için, onları oluşturmak için sadece gölgelendiricileri kullanın - bu, yerel formatlarda kalmayı oldukça basit hale getirir.
Daha sonra daha yüksek seviyede yaptığınız tek şey, ekli kaynaklara sahip boru hatları kurmak ve bunları GPU'ya teslim etmektir. Özellikle donanıma özgü hilelerden faydalanırsanız, her şeyin bu şekilde güzel bir şekilde çıkarılamayacağını göreceksiniz. Ama iyi bir başlangıç.
(Sidenote: platforma özgü hileleri özel bir kaynak olarak ele alırsanız, tüm konsepti oldukça ileriye götürebilirsiniz.)
Yani bir bakıma iki şey yaratacaksınız: Bir donanım kaynak yöneticisi, ayrıca bu kaynakların bir DAG'ını ayarlamak için bir araç seti.