GPU Rust, một bộ công cụ để phát triển trình tạo bóng trong Rust

Công ty phát triển trò chơi Embark Studios đã phát hành bản thử nghiệm đầu tiên của dự án GPU gỉ, nhằm mục đích sử dụng ngôn ngữ Rust để phát triển mã GPU. 

Mong muốn sử dụng Rust để viết chương trình cho GPU không chỉ bắt nguồn từ các tính năng an toàn và hiệu suất cao, mà còn cần có các công cụ hiện đại để làm việc với các gói và mô-đun nhằm nâng cao hiệu quả của quá trình phát triển.

Công ty phát triển GPU Rust Embark Studios cũng sử dụng Rust trong công cụ trò chơi của nó và nó đang làm việc để tạo thuận lợi cho việc trao đổi mã Rust giữa CPU và GPU.

Theo họ, về mặt lịch sử, trong trò chơi, lập trình GPU đã được thực hiện bằng cách viết HLSL hoặc, ở mức độ thấp hơn, GLSL. Đây là những ngôn ngữ lập trình đơn giản đã phát triển cùng với các API kết xuất trong nhiều năm.

Tuy nhiên, khi các công cụ trò chơi đã phát triển, các ngôn ngữ này đã không cung cấp các cơ chế để xử lý các cơ sở mã lớn và nói chung, chúng đã bị tụt hậu so với các ngôn ngữ lập trình khác.

Mặc dù nhìn chung có những lựa chọn thay thế tốt hơn cho cả hai ngôn ngữ, nhưng cả hai ngôn ngữ đều không có khả năng thay thế HLSL hoặc GLSL.

Có thể vì chúng bị nhà cung cấp chặn hoặc vì chúng không được hỗ trợ với đường ống đồ họa truyền thống. Ví dụ về điều này bao gồm CUDA và OpenCL. Và trong khi các nỗ lực đã được thực hiện để tạo ra ngôn ngữ trong không gian này, không có ngôn ngữ nào trong số họ đạt được sức hút đáng chú ý trong cộng đồng gamedev.

GPU Rust tiếp tục phát triển ý tưởng từ dự án RLSL, trong đó một nỗ lực đã được thực hiện để tạo trình biên dịch Rust cho trung gian đổ bóng chung SPIR-V, được đề xuất trong API Vulkan và được hỗ trợ trong OpenGL 4.6.

Ở giai đoạn phát triển hiện tại, GPU Rust đã cho phép bạn chạy các trình tạo bóng đồ họa đơn giản và biên dịch một phần đáng kể thư viện tiêu chuẩn cơ bản của Rust. Đồng thời, dự án vẫn chưa sẵn sàng để sử dụng rộng rãi, ví dụ như các vòng lặp chưa được hỗ trợ bởi trình tạo bóng.

Tại Embark, chúng tôi đã xây dựng công cụ trò chơi của riêng mình từ đầu trong Rust. Chúng tôi có kinh nghiệm trước đó trong việc phát triển nội bộ nguyên mẫu RLSL và chúng tôi có một đội ngũ kỹ sư kết xuất xuất sắc, những người quen thuộc với các vấn đề của ngôn ngữ đổ bóng ngày nay, cả từ trò chơi, công cụ trò chơi và các ngành khác. Vì vậy, chúng tôi tin rằng chúng tôi đang ở một vị trí duy nhất để cố gắng giải quyết vấn đề này.

Chúng tôi muốn hợp lý hóa quá trình phát triển nội bộ của riêng mình bằng một ngôn ngữ tuyệt vời duy nhất, xây dựng cộng đồng và hệ sinh thái đồ họa nguồn mở, tạo điều kiện chia sẻ mã giữa GPU và CPU và quan trọng nhất - cho phép người dùng (tương lai) và các nhà phát triển đồng nghiệp của chúng tôi có nhiều hơn Nhanh chóng tạo ra trải nghiệm hấp dẫn và lôi cuốn.

Dựa trên mã bằng ngôn ngữ Rust, một bản đại diện của trình tạo bóng SPIR-V được hình thành, cho việc tạo ra một chương trình phụ trợ đặc biệt cho trình biên dịch Rust đã được phát triển, hoạt động tương tự với trình tạo mã cần cẩu được sử dụng để biên dịch thành một biểu diễn WebAssembly.

Cách tiếp cận hiện tại là hỗ trợ API đồ họa Vulkan và chế độ xem SPIR-V, nhưng các trình tạo được lên kế hoạch cho tương lai của khung nhìn đổ bóng DXIL (DirectX) và WGSL (WebGPU). Xây dựng dựa trên Cargo và crates.io, các công cụ đang được phát triển để phát triển và xuất bản các gói có trình tạo bóng ở định dạng SPIR-V.

Cuối cùng, nếu bạn muốn biết thêm về dự án này, bạn có thể kiểm tra chi tiết trong kho dự án, liên kết là cái này.

Đối với những người quan tâm đến việc có thể biết mã, họ nên biết rằng mã được xuất bản theo giấy phép MIT và Apache 2.0 và có thể lấy nó từ liên kết bên dưới.

Và họ cũng có thể tham khảo tài liệu đã được chuẩn bị cho các nhà phát triển để họ có thể làm việc trên Linux, Windows và Mac. tham khảo hướng dẫn tại liên kết này.


Nội dung bài viết tuân thủ các nguyên tắc của chúng tôi về đạo đức biên tập. Để báo lỗi, hãy nhấp vào đây.

Một bình luận, để lại của bạn

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Máy bay tự động dijo

    Rust cất cánh, hy vọng không phải là một "Scala chết chóc" khác.