Chi tiết về những gì GPU thực sự làm khi cắt trong không gian đồng nhất 4D?


10

Tôi đang học đường dẫn kết xuất lập trình bằng cách triển khai một trình kết xuất phần mềm nhỏ. Tôi cố gắng thực hiện nó theo kiểu 'phần cứng'. Tuy nhiên, tôi không quen với đường ống GPU và gặp một số vấn đề về việc cắt đồng nhất.

Không gian cắt đồng nhất chứa một biến w khác nhau ở mỗi đỉnh. Là tọa độ đồng nhất của mỗi đối tượng đỉnh (giữa ma trận chiếu và phân chia đồng nhất theo w) tại không gian cắt riêng của nó? Nếu vậy, làm thế nào để cắt các đường và hình tam giác gần hơn Frustum hoặc thậm chí kéo dài phía sau máy ảnh (tức là w <= achum_zgần)?

Cập nhật : chủ đề này nói rằng việc cắt trong không gian đồng nhất trực tiếp là một vấn đề giao nhau trong không gian đồng nhất 4D. Có nghĩa là điểm giao nhau là p_vec4 = t * point1_vec4 + (1 - t) * point2_vec4. Nói rằng tôi có P0(-70, -70, 118, 120)P1(-32, -99, -13, -11)trong không gian đồng nhất 4D, và điểm giao nhau với plane w = -z(mà trong NDC là z = -1) (-35, -96, -1, 0.9) t = 0.99, làm thế nào để có được đối tượng đỉnh tương ứng trong không gian NDC?

Và một khi tôi có được điểm giao nhau chính xác, tôi có nên thực hiện phép nội suy giữa các đối tượng đỉnh được tạo bởi shader đỉnh để có được đối tượng đỉnh mới không?


Điều này gây ấn tượng với tôi vì có quá nhiều câu hỏi cho một bài viết & có lẽ nên được chia ra. Quy tắc chung là một câu hỏi duy nhất (hoặc ít nhất là câu hỏi chính) cho mỗi bài đăng.
Pikalek

@Pikalek Tôi xóa hai câu hỏi còn lại và cố gắng làm cho chủ đề này hợp lý. Cảm ơn lời khuyên của bạn.
stanleyerror

Câu trả lời:


1

Việc cắt được thực hiện trong không gian 3D trước khi chia 'w', không phải trong không gian 4D.

GPU tìm thấy hoặc chỉ các mặt phẳng gần và xa, hoặc tất cả 6 mặt phẳng 3D của chế độ xem bực bội và cắt Geo cho điều này.

Nếu phép chia w được thực hiện trước khi dấu tọa độ sẽ lật cho các đỉnh phía sau mắt / camera.

Nếu chỉ các mặt phẳng gần được sử dụng cho clip 3D trước khi phân chia w thì có thể chỉ dựa vào cắt 2D ở giai đoạn rasterizing cho các mặt phẳng x & y.


W chỉ là một bộ chia chiếu liên quan trực tiếp đến Z, không thực sự là chiều thứ 4. Ma trận 4x4 là một "hack" để bao gồm một bộ phận dịch và chiếu theo định dạng thuận tiện. Nó chỉ hoạt động vì các vị trí được ngụ ý là (x, y, z, 1) và quy tắc được ngụ ý là (x, y, z, 0).

Nhưng nó không thực sự là 4 chiều độc lập.

Bất kỳ giá trị nào khác cho "W" không phải là 1 hoặc 0 đều không có ý nghĩa gì đối với hình học, đó là một công tắc bật / tắt tiện lợi để tắt dịch.


0

Nếu bạn đang hỏi về việc chuyển đổi các cuộn dây không gian clip đồng nhất thành các tọa độ của thiết bị chuẩn hóa (NDC), thì quá trình là: <x y z w> → <x/w y/w z/w>

Câu hỏi thường gặp về GDSE này về lý do tại sao không gian clip luôn được gọi là không gian clip đồng nhất của Cameron ? cũng có thể hữu ích cho bạn


1
Cảm ơn câu trả lời của bạn. Tuy nhiên, vấn đề của tôi là về nội suy. Nói hai điểm e1, e2 dưới tọa độ mắt 3D được chiếu vào không gian cắt đồng nhất 4D h1, h2. Sau đó, chúng tôi thực hiện phép nội suy trong không gian đồng nhất 4D, đoạn h1 - h2 được cắt ở điểm 4D h (t) = t * h1 + (1 - t) * h2. Không mất tính tổng quát, giả sử chúng ta có phần h1-h (t) (có thể xem được) cho giai đoạn rasterization. Vì vậy, chúng ta cần tạo các thuộc tính đỉnh tương ứng (giống như định dạng đầu ra của shader đỉnh). Câu hỏi của tôi là làm thế nào để tạo các thuộc tính mới này?
stanleyerror

Tôi hiểu rằng nội suy không được thực hiện trong HCS, nhưng tôi có thể bị nhầm lẫn. Nếu bạn không nhận được nhiều hơn / câu trả lời tốt hơn ở đây, bạn có thể thử reasking / di chuyển sang SO.
Gulalek

Đồng ý. Tôi có thể trực tiếp chuyển chủ đề này sang SO không, hoặc tôi cần mở lại một câu hỏi mới ở đó.
stanleyerror

Sai lầm của tôi khi đề nghị bạn hỏi lại; đăng chéo thường không được khuyến khích .
Pikalek

Tôi nghĩ rằng các quản trị viên có thể di chuyển tho.
Sidar
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.