Việc sử dụng các shader đơn giản có cải thiện hiệu suất / thời lượng pin không?


8

Tôi đang tạo trò chơi OpenGL cho Android. Cho đến bây giờ tôi chỉ sử dụng đường ống chức năng cố định, nhưng tôi đang hiển thị những điều đơn giản.

Đường ống chức năng cố định bao gồm rất nhiều thứ tôi không cần. Vì vậy, tôi đang suy nghĩ về việc triển khai các shader trong trò chơi của mình để đơn giản hóa đường ống OpenGL nếu nó có thể thực hiện tốt hơn.

Hiệu suất tốt hơn = tuổi thọ pin tốt hơn, trừ khi khung hình / giây bị giới hạn bởi giới hạn phần mềm, không phải sức mạnh phần cứng.


Không phải là đường ống chức năng cố định không được chấp nhận? Có thể là một vấn đề trong tương lai gần.
3Dave

Câu trả lời:


4

Thực sự không có câu hỏi nào ở đây ngoại trừ trong chủ đề, nhưng hiệu suất được cải thiện và thời lượng pin được cải thiện có thể là những điều hoàn toàn khác nhau. Ngoài ra, cải thiện so với những gì? So với đường ống chức năng cố định? So với shader phức tạp?

Các shader đơn giản sẽ cho tốc độ khung hình cao hơn (giả sử tốc độ khung hình của bạn bị giới hạn bởi thông lượng gpu thay vì tốc độ làm mới màn hình) khi so sánh với các shader phức tạp, bạn có thể xem xét hiệu suất tốt hơn. Tuy nhiên, điều đó sẽ không nhất thiết cải thiện thời lượng pin, bạn vẫn có thể sử dụng 100% năng lượng gpu / cpu, nhưng bạn sẽ có tốc độ khung hình cao hơn vì có ít khung hình hơn.

So với đường ống chức năng cố định ... ai biết? Ngày nay, nhiều nhà cung cấp phần cứng thực hiện các đường ống chức năng cố định về các shader, vì vậy bạn chỉ cần so sánh các shader đơn giản và phức tạp một lần nữa.


1

Tôi không có số liệu cập nhật về mức tiêu thụ năng lượng của điện thoại thông minh, nhưng tôi nghĩ rằng CPU và GPU phải ở cùng một mức. Đúng nếu tôi đã sai lầm.

Nói chung, cố gắng tối ưu hóa các phần mã của bạn dựa vào hiệu suất luôn là một điều tốt, không chỉ vì bạn tiết kiệm pin, mà còn vì bạn có thể tiếp cận các thiết bị có phần cứng kém mạnh hơn. Tôi cũng luôn khuyến khích mọi người sử dụng OpenGL ES 2.0 / OpenGL 3.0 cho các trò chơi, bởi vì sức mạnh của các shader là, như bạn đã nói, để cắt giảm nỗ lực đến mức tối thiểu và mang lại sự linh hoạt hơn nhiều.

Nhưng, dựa trên giả định bạn đang hiển thị một số họa tiết 2D, tôi muốn nói rằng GPU chủ yếu ở trạng thái không hoạt động. Điều đó có nghĩa là CPU có thể sẽ có tác động đến thời lượng pin nhiều hơn GPU, vì vậy bạn không nên mong đợi kết quả quá tích cực ở đây. Tôi khuyên bạn nên cố gắng cải thiện thuật toán chạy trên CPU trước khi tối ưu hóa các thuật toán trên GPU, nhưng tôi cũng sử dụng các shader để đảm bảo tính linh hoạt. Ít nhất là nếu bạn có thể bỏ qua các thiết bị ngoài đó mà không cần hỗ trợ OpenGL ES 2.0 (một lần nữa, tôi không có số liệu ^^).


Cảm ơn câu trả lời hay, nhưng tôi đã không hỏi "Tôi nên tối ưu hóa phần nào của trò chơi để sử dụng pin tốt hơn". ;)
kravemir
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.