Là sử dụng nhiều bản đồ kết cấu xấu cho bộ nhớ đệm?


10

Nếu tôi có nhiều kết cấu (giả sử 5+ bản đồ) được liên kết với cùng một đơn vị kết cấu, nó có hoạt động tệ hơn đối với bộ đệm so với khi tôi chỉ có 2 hoặc 3 kết cấu không?

Câu trả lời:


16

Chỉ cần thêm vào câu trả lời của imallett , đúng là việc tăng số lượng truy cập vào dữ liệu kết cấu khác nhau trong một shader sẽ làm tăng áp lực lên (các) bộ đệm GPU, nhưng có một số yếu tố khác có thể ảnh hưởng đáng kể đến hiệu ứng. Nó cũng có thể phức tạp bởi thực tế là, giống như bộ nhớ CPU, có thể có một vài lớp bộ đệm trong GPU, nghĩa là. Đơn vị kết cấu <= L0 <= L1 <= ..Memory

Tránh răng cưa -> Sử dụng bản đồ MIP

Nếu bạn có một cảnh có thu nhỏ dữ liệu kết cấu, do phối cảnh hoặc tỷ lệ đơn giản và bạn không sử dụng ánh xạ MIP, thì bạn sẽ có được bí danh. Đây không chỉ là để tạo ra đồ tạo tác trực quan; nó rất có thể là một vấn đề hiệu suất.

Ngay khi bạn có được răng cưa, địa chỉ truy cập vào kết cấu sẽ trở nên không nhất quán, điều này sẽ không chỉ kết thúc bộ nhớ cache mà còn giới thiệu rất nhiều "ngắt trang" DRAM (chính xác hơn là ngắt hàng) có thể tốn kém. Ánh xạ MIP giúp giảm sự không liên tục.

Nén họa tiết

Có lẽ một chút tùy chọn rõ ràng, nhưng nếu bạn có thể sử dụng nén kết cấu (ví dụ: DXTn | ETC * | PVRTC * | vv) nhắm mục tiêu từ 8bpp xuống, giả sử, 2bpp, bạn có thể tăng đáng kể hiệu quả của băng thông bộ nhớ / bộ đệm các yếu tố từ 4x đến 16x. Bây giờ tôi không thể nói cho tất cả các GPU, nhưng một số lược đồ nén kết cấu (ví dụ như được liệt kê ở trên) rất đơn giản để giải mã trong phần cứng, do đó dữ liệu có thể được nén trong toàn bộ phân cấp bộ đệm và chỉ được giải nén trong đơn vị kết cấu, do đó hiệu quả nhân lên kích thước của những bộ nhớ cache.

Kích thước dữ liệu

Rõ ràng, một số dữ liệu, ví dụ: kết xuất các mục tiêu được sử dụng làm dữ liệu kết cấu trong các lần kết xuất tiếp theo, không thể sử dụng nén kết cấu. Bất cứ khi nào bạn có thể, hãy sử dụng định dạng pixel nhỏ nhất sẽ thực hiện công việc, nghĩa là, nếu 32 / 16bpp (A) RGB sẽ làm, đừng sử dụng định dạng float 4x32!

Truy cập thưa thớt

Điều này có phần liên quan đến ví dụ răng cưa ở trên, nhưng chúng ta đã thấy các trường hợp tạo ra các mục tiêu kết xuất lớn, nhưng sau đó chỉ được lấy mẫu rất thưa thớt. Các dòng bộ đệm, có thể là CPU hoặc GPU, khá dài nên nếu bạn chỉ sử dụng một pixel trong mỗi dòng bộ đệm, bạn sẽ lãng phí chuyển.

Ngoài ra, kết cấu nén WRT, chúng có thể nén bằng cách chia sẻ dữ liệu hiệu quả giữa một vùng địa phương của texels. Nếu sau đó bạn không có quyền truy cập mạch lạc, ngoài việc giảm dung lượng bộ nhớ, việc nén có lẽ sẽ không hữu ích.

Kết cấu phụ thuộc đọc

Không có quá nhiều vấn đề về bộ đệm (tốt, trừ khi các truy cập được tính toán khá không mạch lạc), nhưng các truy cập kết cấu không được xác định trực tiếp bởi tọa độ UV được cung cấp với các đỉnh thể chậm hơn so với các truy cập được xác định trực tiếp.

Kết cấu lát gạch / Morton VS

Mặc dù tôi nghi ngờ nhất textures những ngày này sẽ được lưu trữ trong hoặc một lát gạch hoặc Morton-like (aka Twiddled / Swizzled) trật tự (hoặc thậm chí là một sự kết hợp của cả hai), một số kết cấu có thể vẫn được theo thứ tự quét dòng, có nghĩa là chuyển động quay của kết cấu có thể dẫn đến một số lượng đáng kể lỗi bộ nhớ cache / ngắt trang. Thật không may, tôi thực sự không biết làm thế nào để phát hiện ra nếu một định dạng cụ thể được sắp xếp theo cách như vậy.

(Để đọc nền, hãy thử Sự thật về Bản đồ kết cấu của Blinn . FWIW, thực hiện thêm một vài bước nữa dẫn đến việc sử dụng họa tiết Twiddled-order (tức là thứ tự Morton) trong ít nhất một số phần cứng PC đầu tiên ).


8

Câu trả lời phụ thuộc vào ý của bạn. Phần cứng hiện đại (ví dụ với kết cấu không ràng buộc) thực sự không quan tâm quá nhiều đến bao nhiêu họa tiết bị "ràng buộc". Câu hỏi thực sự là có bao nhiêu bạn sử dụng .

Hoạ tiết thường lưu trữ dữ liệu theo cách thân thiện với bộ đệm (tôi tin rằng đường cong Morton). Nếu bạn sử dụng nhiều kết cấu hơn, bạn sẽ nhận được nhiều lỗi nhớ cache hơn, vì bây giờ các kết cấu cạnh tranh với nhau về không gian.

Điều này thực sự chỉ đến với heuristic lập trình shader nổi tiếng, cũ: vòi kết cấu chậm; không sử dụng quá nhiều.

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.