Kapan menonaktifkan perspektif interpolasi yang benar (noperspective)

13

Dalam GLSL, perspektif yang benar interpolasi atribut vertex adalah pengaturan default - seseorang dapat menonaktifkannya untuk atribut vertex tertentu dengan menggunakan kualifikasi noperspektif . Selain di shader pasca pemrosesan, saya belum pernah melihat perspektif interpolasi yang benar dinonaktifkan - apakah ada kasus penggunaan lainnya? Juga, apakah itu membuat perbedaan, dari segi kinerja?

permata
sumber

Jawaban:

15

Kasing hanya dibatasi oleh imajinasi Anda! noperspectiveberarti bahwa atribut diinterpolasi melintasi segitiga seolah-olah segitiga itu benar-benar rata di permukaan layar. Anda dapat melakukan rendering gambar rangka antialiasedial dengan ini: output jarak layar-ruang ke tepi terdekat sebagai noperspectivebervariasi dan menggunakannya sebagai cakupan dalam pixel shader.

Atau jika Anda melakukan rendering non-fotorealistik dan menginginkan pola dalam ruang layar seperti halftoning , Anda dapat mengaktifkan noperspectiveUV Anda yang digunakan untuk texturing.

Apakah itu membuat perbedaan kinerja? Mungkin, tetapi Anda mungkin tidak akan melihat (dengan pengecualian potensi perangkat keras grafis yang kurang kuat). Sebagian besar GPU terdiri dari serangkaian tahap pipa yang dijalankan secara paralel, dan dalam beberapa hal Anda hanya membayar biaya untuk tahap yang paling mahal. Jika rasterisasi adalah bagian yang paling membatasi untuk Anda, maka Anda mungkin melihat perbedaan dari divisi yang Anda lewatkan per-pixel. Saya kira itu kemungkinan besar saat membuat peta bayangan atau prepass kedalaman, tetapi mereka juga memiliki atribut paling sedikit untuk diinterpolasi.

John Calsbeek
sumber