Sử dụng bộ đệm chỉ mục 16 bit - USHORT vs UINT


7

Trong D3D11, họ vẫn có khả năng tạo bộ đệm chỉ mục 16 bit và 32 bit .

Rất ít mô hình sẽ sử dụng nhiều hơn mức tối đa (20 nghìn tri) mà bộ đệm chỉ mục USHORT có thể xử lý, nhưng tôi có thực sự phải trả chi phí hiệu năng tồi cho việc luôn sử dụng định dạng INT (32 bit) không?

Tiết kiệm bộ nhớ không phải là nhiều (2 byte cho mỗi chỉ mục!). Đối với mô hình tri 20 nghìn, chỉ có 40 kB bộ nhớ mà chúng tôi đang tiết kiệm khi sử dụng USHORT (so với có lẽ nhiều hơn chỉ với dữ liệu đỉnh cho cùng một mô hình đó).

Có thực sự đáng sử dụng bộ đệm chỉ mục USHORT sau đó không, hay đây chỉ là một sự nắm giữ từ khi máy tính có ít bộ nhớ hơn trong những năm 90?


3
Nếu bạn đang tải 100 mô hình như vậy, đó sẽ tiết kiệm được 40 mB bộ nhớ. Trong một số trường hợp nhất định, đáng để tiết kiệm bộ nhớ càng nhiều càng tốt (mặc dù tất cả đều phụ thuộc vào trò chơi và cho 90% dự án, không thực sự xứng đáng)
thedaian

2
@thedaian: Đó là một câu trả lời.

3
@thedaian, theo như tôi có thể nói, con số của bạn bị giảm đi bởi hệ số 10 ^ 8. 100 * 40 kB tạo ra 4 MB. Trong mọi trường hợp, tôi sẽ lo lắng hơn về việc xử lý 2 triệu hình tam giác nói chung. 20k là rất nhiều cho hầu hết các mô hình, bạn có thể nhận được rất xa với 1k và bản đồ vết sưng tốt.
aaaaaaaaaaaa

2
Băng thông cũng quan trọng. 4mb được lưu ít hơn 4mb để tải lên bộ nhớ GPU. Làm thế nào thường xuyên bạn thực sự làm điều này là tùy thuộc vào bạn.
Justicle

1
Bạn có thể có các hình tam giác 64k với bộ đệm chỉ mục 16 bit - chỉ cần sử dụng dải hình tam giác thay vì danh sách hình tam giác.
Adam

Câu trả lời:


10

Bạn phải xem xét các GPU khi tìm nạp dữ liệu để nạp vào các shader đỉnh đòi hỏi rất nhiều cuộc gọi nhỏ vì chúng chỉ có thể lưu trữ một vài hình tam giác cùng một lúc và tìm nạp dữ liệu từ VRAM là một hoạt động rất chậm. Vì vậy, tôi cho rằng nếu bạn sử dụng một nửa byte cho các chỉ mục, GPU sẽ có thể tìm nạp hai lần các chỉ số cho bộ đệm để hiển thị hình tam giác.

4MB Có thể là một lượng bộ nhớ nhỏ cho không gian lưu trữ, nhưng nếu bạn phải thực hiện một cuộc gọi phức tạp để chỉ xử lý một vài byte từ chúng, điều đó có thể ảnh hưởng đến hiệu suất theo cách đáng chú ý. Ngày nay, thẻ video đủ mạnh để khiến nó không liên quan trong các trò chơi không phải xử lý nhiều hình học, bạn ... có thể thực hiện một số điểm chuẩn hiển thị mô hình với cả hai kích thước chỉ mục nếu bạn thực sự muốn biết.

Thời gian tải cũng nhanh hơn với các chỉ số 16 bit và thực tế là mỗi lần ghi hoặc đọc, trừ khi bạn có thể kiểm soát hiệu quả căn chỉnh bộ nhớ và phân trang thích hợp. Vì vậy, nó không chỉ là về bộ nhớ mà nó đòi hỏi mà còn phải mất bao nhiêu để xử lý nó. Nếu bạn đang làm việc với các bộ đệm động cần được chuyển qua xe buýt đến GPU tại một số điểm giữa các Khung, thì bạn nên sử dụng các chỉ số 16 bit khi có thể. Nếu bạn đang hiển thị hình học thậm chí nhỏ hơn, bạn có thể bó nhiều chỉ mục trong một bộ đệm chỉ mục 16 bit cho tất cả chúng để được sao chép vào GPU trong một cuộc gọi.

Tại đây bạn có thể tìm thấy một số thông tin về cách thức hoạt động của GPU ATI mới hơn:

Tài nguyên đào tạo nhà phát triển ATI Stream (xin lỗi tôi không thể tìm thấy tài liệu chính xác) Tôi đã không đọc nhiều về các NVidia, nhưng tôi nghĩ rằng chúng hoạt động ít nhiều với cách tiếp cận tương tự.


5

Trong khi tốc độ bộ nhớ và CPU đã được cải thiện qua nhiều năm, các trò chơi vẫn thường đẩy các giới hạn của phần cứng và phần mềm. Nếu bạn đang tải 100 mô hình như vậy, đó sẽ tiết kiệm được 4 megabyte bộ nhớ. Trong một số trường hợp nhất định, đáng để lưu càng nhiều bộ nhớ càng tốt. Điều đó có thể đủ để bạn tải một mô hình khác hoặc đủ để nhồi nhét thêm một vài hiệu ứng âm thanh hoặc một bài hát khác. Đối với hầu hết các trò chơi AAA, loại tiết kiệm này rất quan trọng để làm mọi thứ tốt hơn so với đối thủ.

Tất nhiên, tất cả đều phụ thuộc vào trò chơi, và cho nhiều dự án, không thực sự xứng đáng. Nhưng nếu bạn muốn đẩy phần cứng càng xa, bạn sẽ muốn tìm cách tiết kiệm bộ nhớ càng nhiều càng tốt, vì vậy bạn có chỗ để thêm nhiều thứ hay ho hơn.


4

Nó không chỉ là về bộ nhớ; một số phần cứng chỉ đơn giản là không thể hỗ trợ các chỉ mục 32 bit và phải chạy đường ống đỉnh trong phần mềm nếu bạn sử dụng chúng. Nó hiếm hơn, nhưng bạn vẫn có thể nhận được sự ngạc nhiên khó chịu thường xuyên khi bạn gặp một người. Nói chung, chỉ mục 16 bit cũng có thể chạy nhanh hơn, điều này có thể quan trọng nếu bạn chịu áp lực về hiệu suất, nhưng bạn sẽ cần điểm chuẩn và cân nhắc lợi ích của sự hoàn hảo thêm từ chỉ số 16 bit so với sự đánh đổi có thể cần phải phân tách một mô hình bởi vì không có một câu trả lời duy nhất cho câu trả lời đó đúng trong mọi tình huống.

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.