Làm thế nào tôi có thể gỡ lỗi chương trình shader?


18

Tôi đang trong quá trình gỡ lỗi các shader đỉnh GLSL và tôi không thể lay chuyển được cảm giác rằng mình đang làm sai.

Nói chung, tôi có hai chiến lược để bù đắp cho việc thiếu dấu vết

  • Tôi nhét các giá trị vào một màu gỡ lỗi khác nhau mà tôi chuyển cho shader mảnh và sau đó cố gắng diễn giải các màu.
  • Tôi thay đổi mã shader đỉnh và xem điều gì sẽ xảy ra.

Tôi nghĩ rằng lý tưởng nhất là tôi có thể bù đắp cho việc thiếu dấu vết bằng cách viết giá trị vào kết cấu bằng cách nào đó, đọc kết cấu từ GPU và in các giá trị được nhồi trong kết cấu.

Tôi đoán là có thể có cách tốt hơn. Bất kỳ đề xuất?

Câu trả lời:


3

Một người bạn của tôi đã sử dụng glslDevil cho việc này, và nói rằng nó ổn.

Nếu bạn không bị ràng buộc với GLSL, Microsoft có một công cụ đáng kinh ngạc cho DirectX được gọi là PIX , nhưng tôi không nghĩ có gì tương đương với OpenGL.


Tôi đã tải xuống glslDevil nhưng tôi không thể sử dụng hầu hết các tính năng. Việc truy tìm hoạt động và bước qua các shader nhưng tôi không thể thấy các giá trị của các biến.
Jonathan Fischoff

2

nVidia có một trình gỡ lỗi shader tuyệt vời. Bạn có thể tìm thấy nó, và thông số kỹ thuật của nó, TẠI ĐÂY

Cập nhật 2016: Ngoài ra còn có một plugin Visual Studio, rất có thể là nỗ lực mới hơn của họ trong việc giúp đỡ các nhà phát triển, tại đây: https://developer.nvidia.com/nvidia-nsight-visual-studio-edition


typo: thông số kỹ thuật của nó
o0 '.

cám ơn. =) Tôi nhận được đúng 70% thời gian. Tôi đổ lỗi cho DainBramage.
Thợ làm móng

Mặc dù không có hỗ trợ GLSL :(, nhưng có vẻ như tôi có thể chuyển đổi các trình tạo bóng cg thành glsl tự động, có thể thử lại.
Jonathan Fischoff

Bạn nói đúng về điều đó, nhưng tôi nghĩ những ưu điểm vượt trội hơn những nhược điểm. Bên cạnh đó, nhà soạn nhạc FX là một ứng dụng khá tiện lợi.
Thợ làm móng

Liên kết bị hỏng ....
UpTheCalet
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.