Tại sao bạn lại sử dụng kết xuất phần mềm qua kết xuất phần cứng?


13

Trái ngược với CPU hoặc phần mềm kết xuất tôi giả sử?

Nhìn chung, tất cả các kết xuất hiện tại đều dựa trên GPU, xem như bạn sẽ sử dụng OpenGL hoặc Direct X?

Ai đó có thể cho tôi một số thông tin ở đây, không thể tìm thấy câu trả lời phù hợp?

Câu trả lời:


7

Như bạn đã biết rõ kết xuất GPU là gì ... hãy để tôi trả lời những gì bạn dường như đang hỏi.

Theo truyền thống, kết xuất phần cứng đã mang một sự kỳ thị là rất phức tạp. Điều này phần lớn là do thiết kế các giao diện lập trình ứng dụng (API) chưa được định hướng tốt để che giấu sự phức tạp; đó là, đường cong học tập đã được dốc. Một phần cũng là do sự hiểu biết rằng việc viết các ứng dụng 3D - mà các API này được định hướng rất nhiều - phức tạp hơn nhiều so với việc viết các ứng dụng 2D. Giao diện phức tạp, tôi đang đề cập đến các giao diện như OpenGL và DirectX. Re 3D vs 2D, tôi đang đề cập đến toán học và hình học xây dựng các cảnh 3D, so với sự đơn giản mà tâm trí không được đào tạo có thể tiếp cận các vấn đề 2D.

Tuy nhiên, trong những năm gần đây, không chỉ các tài liệu học tập trở nên sẵn có hơn rất nhiều, mà còn, nhiều thư viện bao gồm các phức tạp cơ bản của các giao diện này đã trở nên có sẵn và đã hạ thấp các rào cản gia nhập. Tất cả những điều này đã đưa trở lại vào một chu kỳ quan tâm ngày càng tăng do tầm quan trọng ngày càng tăng của trực quan hóa, giao diện người dùng bóng bẩy và hiệu suất trên các thiết bị có công suất thấp.

Vì vậy, kết xuất phần mềm và kết xuất 2D là điểm khởi đầu tốt và là khu vực trọng tâm cho những người mới làm quen với đồ họa và / hoặc muốn tạo ra một sản phẩm trong đó kết xuất không mất quá nhiều thời gian có sẵn cho một dự án. Ít nhất là liên quan đến 2D, điều này vẫn được áp dụng; công nghệ phần lớn đã che lấp khoảng trống trong việc đưa kết xuất 2D lên GPU.


20

Có một số câu trả lời thực sự tốt ở đây, vì vậy chỉ để bổ sung chúng.

Một động lực chính đằng sau kết xuất phần mềm là khả năng. Điều này đã được đề cập đến trong một trong các câu trả lời, nhưng tôi sẽ phải thực hiện một điểm đối lập: phần mềm vẽ thực sự có thể được nhiều hơn khả năng hơn render phần cứng, không ít.

Với phần cứng, bạn thường bị giới hạn ở khả năng của chính phần cứng, mặc dù OpenGL cho một người có khả năng mô phỏng phần mềm rất nhiều thứ có thể không tồn tại trong phần cứng. Điều đó có nghĩa là nếu bạn cố gắng sử dụng Tính năng X nhưng phần cứng không hỗ trợ, một trong hai điều sẽ xảy ra: hoặc bạn sẽ quay lại mô phỏng phần mềm (kịch bản OpenGL điển hình) hoặc bạn không nhận được sử dụng nó ở tất cả (kịch bản D3D điển hình).

Với phần mềm kết xuất, bạn có thể tự viết mã. Bạn có thể thao tác mọi thứ và có toàn quyền kiểm soát những gì xảy ra xuống mức pixel. Để đưa ra một ví dụ về vụ nổ từ quá khứ, Quake đã tạo các pixel shader được triển khai trong phần mềm vào năm 1996, vào thời điểm mà các thẻ 3D (lúc đó chúng không được gọi là "GPU") có thể tạo ra vài chục hình tam giác có họa tiết.

Đây cũng là trường hợp tương tự với các GPU hiện tại, nhưng vẫn có những phần quan trọng của đường ống đồ họa được thể hiện dưới dạng chức năng cố định (hoặc thậm chí không được phơi bày).

Phần mềm kết xuất có thể mở rộng tốt hơn. Chỉ tương đối gần đây chúng ta đã thấy các thiết lập đa GPU trở nên thực sự khả thi, nhưng phần mềm có thể mở rộng trên nhiều lõi CPU trong nhiều máy chủ. Bạn có thể có toàn bộ trang trại máy chủ dành riêng cho việc này và các trang trại kết xuất chuyên nghiệp vẫn sẽ sử dụng kết xuất phần mềm.

Phần mềm có thể phơi bày các mô hình kết xuất khác nhau. Phần cứng hiện tại rất tập trung xung quanh mô hình tam giác / đỉnh / đoạn / rasterization; đó là một trường hợp chọn một thứ và tối ưu hóa nó cho đến khi nó hét lên vì thương xót. GPU vẫn là một lựa chọn kém cho ví dụ dò tia, thường được triển khai trong phần mềm.

Tất nhiên, khi nói đến việc so sánh trực tiếp, GPU sẽ đánh bại phần mềm vào bất kỳ ngày nào trong tuần - miễn là chúng ta so sánh các khu vực nơi GPU mạnh hơn. Nhưng điều đó không có nghĩa là họ mạnh hơn ở mọi khu vực. Mặc dù vậy, và cho các mục đích của trang SE này, sử dụng phần cứng nói chung là cách tốt nhất nhưng chỉ cần lưu ý rằng có những trường hợp sử dụng ngoài kia, nơi phần mềm cũng khả thi.


8
+1 cho "kết xuất phần mềm thực sự có thể có khả năng hơn kết xuất phần cứng, không phải ít hơn."
Concept3d

10

Kết xuất phần cứng hoặc GPU là, như bạn đã đoán bằng cách sử dụng đơn vị xử lý đồ họa (còn gọi là Thẻ video) để hiển thị hình ảnh. Ngược lại là kết xuất phần mềm nơi CPU được sử dụng.

Kết xuất phần mềm thường được sử dụng làm dự phòng khi không có GPU (phù hợp). Tuy nhiên, vì GPU là đơn đặt hàng có cường độ nhanh hơn nên hầu như không bao giờ có ích vì CPU thường sẽ không thể hiển thị hình ảnh trong thời gian thực. Kết xuất phần mềm rất hữu ích khi cần độ chính xác cao nếu công thức cực kỳ phức tạp được yêu cầu để hiển thị hình ảnh. Vì CPU là mục đích chung hơn nên GPU và do đó có nhiều khả năng hơn. Tuy nhiên, đối số này ngày càng ít có giá trị vì GPU ngày nay có thể xử lý các tác vụ ngày càng phức tạp hơn và không còn bị giới hạn chỉ là các phao 32 bit để thể hiện các con số.


2

Tôi nghĩ rằng đây là một câu hỏi thực sự tốt.

Những gì tôi có thể tưởng tượng là:

  • VRAM bị giới hạn nhiều hơn bộ nhớ RAM nói chung. Trong trường hợp kết xuất GPU - mọi kết cấu đều là vấn đề. Bạn có thể lưu trữ trung bình khoảng 4 đến 8 lần dữ liệu trong RAM so với VRAM. Tất nhiên kịch bản này giả định rằng không có hệ thống nào chịu trách nhiệm giải phóng / đẩy các kết cấu không sử dụng / yêu cầu từ / đến RAM / VRAM

  • Về mặt đa luồng, nó dễ dàng hơn nhiều khi bạn làm việc với kết xuất phần mềm - không cần chia sẻ bối cảnh

  • Nếu bạn đang thực hiện đồ họa 2D - thường thì hầu hết các khung đều mang theo sự đánh giá của Đánh giá hình chữ nhật bẩn - điều giải quyết nhiều vấn đề về hiệu năng.

Tuy nhiên, kết xuất bằng OGL / D3D mang lại hiệu năng và khả năng cao hơn rất nhiều. Shader có thể làm những điều thực sự tuyệt vời, gần như không thể với kết xuất phần mềm.

Nhưng các kỹ thuật như làm mờ, sử dụng colorkey, có cảm giác riêng của chúng như thể bạn ở cấp độ cơ sở, nguồn gốc của thế giới đồ họa máy tính.

Tôi nghĩ rằng ít nhất là tốt để biết về kết xuất phần mềm. Đó thực sự là một thế giới rất thú vị, không đề cập đến việc nó là gốc rễ của tất cả những gì chúng ta thấy ngày nay.


1
Bạn không cần tăng tốc phần cứng để chạy shader. OS X 10.9 xuất hiện với tính năng hoàn thành phần mềm GL4. Hiệu suất tốt đến mức không thể tin được khi kết xuất phần mềm; nó không phải đến điểm mà bạn thực tế có thể chơi trò chơi phức tạp (phải công bằng, không phải là những tàu GPU của Apple sản phẩm của họ với) nhưng nó xa hơn thực tế hơn là sử dụng một cái gì đó giống như bộ quét tài liệu tham khảo Direct3D. Nó thực sự là một cái gì đó bạn có thể gửi phần mềm làm việc bằng cách sử dụng.
Andon M. Coleman

@ AndonM.Coleman Không phải ai cũng sử dụng Apple và tôi không biết về trình kết xuất phần mềm hỗ trợ trình đổ bóng trên Linux và Windows.
luke1985

1
Đó không phải là quan điểm của tôi. Có các triển khai OpenGL trong đó các shader đầy đủ chức năng chạy hoàn toàn trên CPU. Việc Apple là nhà phát triển phần lớn không liên quan. Câu trả lời của bạn đã cho ấn tượng rằng bạn nghĩ rằng bạn phải có GPU để chạy các trình đổ bóng hiện đại trong OpenGL.
Andon M. Coleman

@ AndonM.Coleman Và điều đó gần như là chính xác, bởi vì trong 80% trường hợp bạn phải làm.
luke1985

2
Các shader có thể được thực hiện dễ dàng thông qua kết xuất phần mềm, ngay cả Tomb Raider 1 và Quake 1 cũng có các pixel shader. Hoàn toàn ngược lại, CPU cung cấp cho bạn nhiều quyền kiểm soát hơn sau đó giới hạn đường ống đỉnh / đoạn giới hạn của GPU hiện tại.
lama12345
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.