Sắp xếp các đối tượng trước khi kết xuất


10

Tôi đang cố gắng thực hiện một biểu đồ cảnh và trong tất cả các bài viết tôi đã đi qua có nói về việc sắp xếp đối tượng. Vì vậy, bạn sắp xếp các đối tượng của bạn theo "vật liệu" chẳng hạn. Bây giờ cho đến khi tôi ngồi xuống và bắt đầu thực hiện nó, tôi đã coi điều này là đương nhiên, bởi vì nó có ý nghĩa. Nhưng bây giờ tôi đang tự hỏi những gì sắp xếp thực sự thay đổi?

Trong công cụ của tôi, tôi có một người quản lý cho UBO, tôi sử dụng những người đó để lưu trữ dữ liệu sẽ được chia sẻ giữa các chương trình, tại thời điểm này chỉ liên quan đến thời gian, máy ảnh và ma trận chiếu và đèn (tôi không lo lắng về việc quản lý đèn nào ảnh hưởng Đối tượng nào ATM).

Bây giờ đối với mỗi mô hình tôi phải thay đổi mô hình thành đồng phục ma trận thế giới, không có sự sắp xếp nào sẽ thay đổi điều đó. Vì vậy, bước nhảy từ thay đổi ma trận này sang việc thiết lập một vật liệu cho từng đối tượng có xấu không?

Tôi mơ hồ nhớ rằng đã đọc ở đâu đó rằng mỗi khi bạn thay đổi thứ gì đó trong đường ống, nó sẽ bị xóa và điều đó có thể gây ra vấn đề về hiệu suất. Nhưng đối với mỗi bản vẽ, tôi đang thiết lập một mô hình cho ma trận thế giới, vậy nó có ý nghĩa gì đối với việc này?

BTW có bất kỳ thông tin nào về việc thay đổi đồng phục và gọi glBufferSubData có đắt hơn (hoặc ít hơn) không.


3
Trả lời nhanh, vâng, việc chuyển từ thay đổi ma trận sang thiết lập vật liệu ở mỗi đối tượng là điều tồi tệ. Tại thời điểm này, tôi khuyên bạn nên thực hiện một chuyến đi phụ để tìm hiểu về các công cụ đo hiệu suất OpenGL cho nền tảng của bạn trước khi tiếp tục. Với các công cụ hoàn hảo, bạn có thể dễ dàng đo các kỹ thuật khác nhau và tìm ra những gì phù hợp nhất với nhu cầu của trình kết xuất của bạn. Ngoài ra, các công cụ đó sẽ kéo dài toàn bộ sự nghiệp của bạn về phía trước trong khi trình kết xuất này ... không quá nhiều ;-)
Patrick Hughes

@PatrickHughes tuyệt vời, cảm ơn, tôi chắc chắn sẽ kiểm tra chúng
dreta

Câu trả lời:


4

Bạn chắc chắn muốn sắp xếp để hàng loạt các vật liệu với nhau. Nếu bạn có thể, bạn cũng có thể sử dụng instaging để bó hình học với nhau (ví dụ: Nếu bạn có số X của cùng một đối tượng).

Vẫn còn giá trị trong việc sắp xếp theo chiều sâu. Bạn phải sắp xếp trở lại phía trước cho các đối tượng trong suốt (bỏ qua một số kỹ thuật nâng cao loại bỏ nhu cầu đó, trong trường hợp hạn chế).

Cũng có giá trị trong việc sắp xếp các vật thể mờ đục từ trước ra sau, vì điều đó cho phép Z sớm giảm đáng kể phần đổ bóng mảnh trên đầu cảnh của bạn.


3
Đặt hàng các đối tượng mờ / trong suốt là không dễ dàng cho các tình huống phức tạp (đến mức không thể nếu không có các quy tắc tùy ý). Bạn cũng có thể nhóm theo kết cấu cho cùng một mục đích giảm các cuộc gọi gl.
Darkwings

Sắp xếp theo kết cấu là cần thiết để thực hiện các cuộc gọi theo đợt và giảm các cuộc gọi rút thăm. Sắp xếp không có gì để làm với việc giảm các cuộc gọi rút thăm. Sắp xếp phải thực hiện với việc thực hiện kết xuất chính xác (đối với các đối tượng trong suốt) hoặc để giảm thiểu chi phí bộ xử lý phân mảnh (đối với các đối tượng mờ). "Phức tạp" là một vấn đề, vâng, nhưng đó là những gì các lập trình viên đồ họa trò chơi được trả tiền để đối phó để làm cho các trò chơi thực sự có thể chơi được trên phần cứng hàng hóa. Hiệu quả phần cứng giữa các đối tượng mờ được sắp xếp và chưa phân loại có thể khá lớn.
Sean Middleditch

opengl.org/wiki/Trans minh họa_Sorting Đó là những gì tôi có nghĩa là 'quy tắc tùy ý'. Không có mục tiêu 'sắp xếp' chính xác cho các trường hợp phức tạp. Về 'sắp xếp' và 'đặt hàng', OP đã nêu rõ 'sắp xếp theo vật liệu' (không phân biệt độ trong suốt) và tôi cũng có ý tương tự đối với kết cấu vì cả hai mục tiêu đều ảnh hưởng đến hiệu suất.
Darkwings

Thành thật mà nói, tôi chưa bao giờ thấy những loại vấn đề đó xuất hiện trong các trò chơi thực sự. Những ví dụ đó không thực sự phản ánh cách người ta thực sự làm mọi việc, trong đó các vật thể trong suốt thường có kích thước gần như hình dạng và có ranh giới va chạm khá "hình hộp", cả hai đều ngăn chặn sự chồng chéo điên rồ. Trong cả hai trường hợp, thực tế là "nó khó" không thay đổi sự cần thiết của nó. Tất nhiên tôi cũng đã chỉ ra rằng việc tạo khối bằng vật liệu rất quan trọng và đã đề cập đến việc phản đối quyết định "không sắp xếp có thể giúp", vì vậy tôi không chắc có câu gì cụ thể mà bạn thấy sai trong câu trả lời của tôi không.
Sean Middleditch

Hãy nhìn xem, một nhận xét không có nghĩa là tôi đã tìm thấy điều gì đó sai trong câu trả lời của bạn và tôi không bao giờ nói 'không sắp xếp có thể giúp đỡ'. Tôi đã tuyên bố rằng có những trường hợp không có giải pháp chính xác khách quan tồn tại, vì vậy rõ ràng phải tìm ra giải pháp bằng cách sử dụng các quy tắc tùy ý. Đó là 2 tuyên bố hoàn toàn khác nhau.
Darkwings

3

Sắp xếp các đối tượng hoàn toàn theo chiều sâu có một giá trị rất lớn, đặc biệt là trên các kiến ​​trúc dựng hình xếp chồng hoặc lát gạch.

Sắp xếp chất rắn từ trước ra sau, trong suốt từ sau ra trước.

Khi kết xuất, những thứ gần máy ảnh và vật rắn nhất sẽ được hiển thị đầu tiên và mọi thứ khác chiếm cùng một không gian sẽ bị từ chối bởi kiểm tra bộ đệm z sớm.

Nếu kiến ​​trúc đồ họa có một số loại bộ đệm z phân cấp hoặc độ phân giải thấp, hình học có thể bị loại bỏ ngay cả trước khi mọi thứ được hiển thị.

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.