OpenGL cho phép bạn chia sẻ cùng một shader giữa nhiều chương trình. Ngoài việc tiết kiệm một lượng nhỏ bộ nhớ và bộ điều khiển đổ bóng, có bất kỳ lợi ích hiệu năng nào của GPU để làm việc này không?
OpenGL cho phép bạn chia sẻ cùng một shader giữa nhiều chương trình. Ngoài việc tiết kiệm một lượng nhỏ bộ nhớ và bộ điều khiển đổ bóng, có bất kỳ lợi ích hiệu năng nào của GPU để làm việc này không?
Câu trả lời:
Tôi nghi ngờ có một lợi ích hiệu suất phía GPU.
Ví dụ, khi bạn liên kết một shader chung với một chương trình, việc triển khai hiệu quả sẽ có thể loại bỏ các thuộc tính không sử dụng giữa shader đó và các shader khác trong chương trình đó và thậm chí có thể đơn giản hóa logic shader. Tất nhiên, điều này không có lợi ích thực sự so với tổ hợp shader được điều chỉnh bằng tay, nhưng nó giúp quản lý sự phức tạp / tổ hợp và có thể làm giảm số lượng biên dịch mà trình điều khiển phải thực hiện.
Tuy nhiên, có thể có những hạn chế khi thực hiện điều này trong việc đánh vào các triển khai trình biên dịch trình điều khiển không hiệu quả. Và có một số ở ngoài đó, hãy kiểm tra: http://ara-p.info/blog/2010/09/29/glsl-optimizer/ để biết một số điều đơn giản mà một số triển khai có thể bị sai.