Bagaimana saya bisa men-debug program shader?


18

Saya sedang dalam proses debugging vertex shader GLSL dan saya tidak bisa menghilangkan perasaan bahwa saya melakukan itu salah.

Secara umum saya memiliki dua strategi untuk menebus kurangnya penelusuran

  • Saya memasukkan nilai ke dalam warna debug yang berbeda-beda yang saya berikan ke fragmen shader dan kemudian mencoba menafsirkan warna.
  • Saya mengubah kode shader vertex dan melihat apa yang terjadi.

Saya berpikir bahwa idealnya saya bisa menebus kurangnya penelusuran dengan menulis nilai ke suatu tekstur, membaca tekstur dari GPU dan mencetak nilai yang dimasukkan ke dalam tekstur.

Dugaan saya adalah mungkin ada cara yang lebih baik. Ada saran?

Jawaban:


3

Seorang teman saya telah menggunakan glslDevil untuk ini, dan mengatakan itu tidak masalah.

Jika Anda tidak terikat dengan GLSL, Microsoft memiliki alat luar biasa untuk DirectX yang disebut PIX , tetapi saya tidak berpikir ada yang setara dengan OpenGL.


Saya telah mengunduh glslDevil tetapi saya tidak dapat mengaktifkan sebagian besar fitur. Penelusuran berfungsi, dan melangkah melalui shader tapi saya tidak bisa melihat nilai variabel.
Jonathan Fischoff

2

nVidia memiliki debugger shader yang mengagumkan. Anda dapat menemukannya, dan spesifikasinya, DI SINI

Pembaruan 2016: Ada juga plugin Visual Studio, yang kemungkinan besar adalah upaya mereka yang lebih baru dalam membantu pengembang, di sini: https://developer.nvidia.com/nvidia-nsight-visual-visual-studio-edition


typo: nya spesifikasi
o0' .

Terima kasih. =) Saya mendapatkan yang benar 70% dari waktu. Saya menyalahkan DainBramage.
Nailer

tidak ada dukungan GLSL :(, tapi sepertinya saya bisa mengonversi cg shaders menjadi glsl secara otomatis, mungkin bisa mencobanya.
Jonathan Fischoff

Anda benar tentang itu, tapi saya pikir kelebihannya melebihi kerugiannya. Selain itu, komposer FX adalah aplikasi yang cukup bagus.
Nailer

Tautan rusak ....
UpTheCreek
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.