Tôi hiện đang làm việc trên một dự án WebGL, mặc dù tôi tưởng tượng câu hỏi này là chung chung trên nhiều API đồ họa.Chia sẻ các đỉnh giữa các khuôn mặt có đáng giá không?
Hãy để tôi sử dụng ví dụ về khối lập phương đơn giản để minh họa những gì tôi đang yêu cầu.
Khối lập phương có 6 mặt với 4 đỉnh trên mỗi khuôn mặt, vì vậy tổng cộng chúng tôi có 24 đỉnh tạo thành hình lập phương. Tuy nhiên, chúng ta có thể giảm tổng số đỉnh chỉ còn 8 nếu chúng ta chia các đỉnh giữa các khuôn mặt. Như tôi đã đọc, điều này có thể tiết kiệm rất nhiều bộ nhớ GPU quý giá đặc biệt là khi làm việc với các mô hình và cảnh phức tạp.
Mặt khác, tôi đã trải nghiệm trực tiếp một số nhược điểm với chia sẻ đỉnh giữa các khuôn mặt. Chúng bao gồm:
đỉnh Complex tính toán bình thường như chúng ta phải tìm ra 'trung bình' bình thường đối với mỗi đỉnh, có tính đến normals mặt của mỗi mặt mà nói đỉnh là một phần của.
Một số đỉnh phải được sao chép để 'khớp' với tọa độ UV tương ứng của chúng.
Là một đỉnh có thể được chia sẻ bởi nhiều khuôn mặt, chúng tôi không thể chỉ định một màu khác nhau cho mỗi khuôn mặt sử dụng cho mỗi màu đỉnh.
Cuốn sách Tôi đã được đọc thực sự nhấn mạnh tầm quan trọng của việc chia sẻ đỉnh để giảm thiểu sử dụng bộ nhớ, vì vậy khi tôi đi qua một số trong những nhược điểm của việc chia sẻ đỉnh Tôi đã không chắc chắn như thế nào khả thi/hữu ích đỉnh bóng thực sự là và khi tác giả không đề cập đến bất kỳ nhược điểm nào của việc chia sẻ đỉnh, tôi muốn nhận được ý kiến của các bạn. Vậy là việc tiết kiệm bộ nhớ được tạo ra từ việc tô bóng đỉnh thực sự quan trọng?
Cảm ơn câu trả lời của bạn. Tôi chỉ giả định rằng tất cả các đối tượng được xử lý chính xác theo cùng một cách khi được nhập khẩu, nhưng tôi đoán một động cơ có thể được sửa đổi để xử lý các cấp chia sẻ đỉnh khác nhau. Bạn nhấn móng tay trên đầu khi bạn đề cập đến một khối lập phương - đó là hình dạng gây ra cho tôi những vấn đề.Vì vậy, nếu tôi thực hiện điều này trong công cụ của mình, bạn nên thêm chức năng để nhập các đối tượng có mức độ chia sẻ đỉnh tùy chỉnh, để các đối tượng đó, chẳng hạn như hình khối, có thể được xử lý chính xác, trong khi nhiều đối tượng hữu cơ sử dụng mức độ chia sẻ cao? – Armada
Chắc chắn, chia sẻ đỉnh là tương đối đơn giản, và nên chắc chắn là tùy chọn/biến trong động cơ. Cho phép bạn chia sẻ (hoặc không chia sẻ) bất kỳ đỉnh nào theo ý muốn là điều cần thiết trong việc tối ưu hóa việc sử dụng bộ nhớ. – Invalid