Kedua grafik API (OpenGL dan DirectX) menyusun pipa yang terdefinisi dengan baik di mana beberapa tahap dapat diprogram. Tahap-tahap yang dapat diprogram ini harus mengambil jumlah data tetap minimum dan diharapkan melakukan berbagai operasi yang didefinisikan dengan baik di atasnya, dan mengeluarkan beberapa output minimum yang telah ditentukan, sehingga data dapat diteruskan ke tahap berikutnya dengan benar. Tampaknya seolah-olah pipa-pipa ini dirancang untuk bekerja dengan hanya sejumlah terbatas jenis data geometrik, yang dalam kasus D3D dan OGL adalah data titik dan koordinat tekstur.
Tetapi, jika diberikan kasus ketika aplikasi yang saya rencanakan untuk dibuat tidak menggunakan simpul (atau bahkan voxel) untuk merepresentasikan data geometrisnya dan tidak secara tepat melakukan transformasi atau proyeksi atau rasterisasi atau interpolasi atau semacamnya, keterbatasan API seperti itu. atau pipa membuat segalanya menjadi sulit.
Jadi, apakah ada cara di mana kita dapat mengubah grafik pipa dengan cara sehingga fungsionalitas apa yang dilakukan setiap tahap terhadap data dan jenis data yang dikeluarkan di setiap tahap diubah untuk keuntungan saya? Jika tidak, maka adakah cara agar saya dapat menggunakan fungsi API 'mentah' untuk membangun pipa saya sendiri? Jika tidak, tolong sebutkan mengapa itu tidak mungkin.
EDIT : Aplikasi Saya menggunakan fungsi kerapatan untuk merepresentasikan geometri. Fungsi memiliki nilai di setiap titik dalam ruang. Saya membagi frustrasi kamera menjadi kotak 3d, setiap blok dapat diproyeksikan sebagai piksel. Pada setiap blok, saya mengintegrasikan fungsi kerapatan dan memeriksa apakah nilainya lebih dari nilai yang diperlukan. Jika ya, maka diasumsikan bahwa ada sesuatu di blok itu dan piksel yang sesuai dengan blok itu diberikan. jadi, sekarang di renderer saya, saya ingin meneruskan fungsi (yang saya wakili dengan string) ke perangkat keras grafis alih-alih data vertex dalam buffer vertex. ini juga menyiratkan bahwa shader vertex tidak akan memiliki simpul untuk berubah menjadi ruang klip homogeni dan shader fragmen tidak mendapatkan info piksel. alih-alih, sekarang sebagian besar pencarian dan evaluasi terjadi per piksel.