Projection Matrix, Clip Space, Perspective Divide, dan NDC

Untuk mengubah primitif-primitif 3D menjadi pixel-pixel di layar, diperlukan fungsi yang menerima masukan kordinat 3D dan mengembalikan kordinat 2D layar. Diperlukan juga fungsi clipping yang menentukan apakah titik 3D tertentu berada di dalam layar kamera.

Kedua fungsi diatas dapat dicapai dengan menggunakan Projection Matrix. Projection matrix mengubah kordinat 3D yang berada di View Space (kordinat 3D relatif terhadap sistem kordinat kamera) menjadi Clip Space. Pada Clip Space ini, graphics platform akan menentukan apakah suatu titik/vektor berada di dalam layar atau tidak, jika iya, titik/vektor tersebut akan kemudian ditransformasi menjadi kordinat NDC. Tahap transformasi terakhir ini dinamakan Perspective Divide. Vektor hasil Perspective Divide kemudian akan ditransformasikan menjadi kordinat NDC ayng digunakan oleh graphics driver untuk menentukan dimana posisi titik tersebut di layar.

Agar titik kordinat 3D dapat ditransformasikan dengan baik oleh graphics driver, diperlukan Projection Matrix. Untuk menghitung Projection Matrix, perlu diketahui terlebih dahulu tahapan-tahapan transformasi titik yang dilakukan oleh graphics driver dengan dimulai dari tahapan terakhir transformasi yaitu kordinat NDC dan kemudian sampai ke tahapan pertama yaitu Projection Matrix.

Continue reading