1 điểm bởi GN⁺ 2024-08-31 | 1 bình luận | Chia sẻ qua WhatsApp

GPU API MkII

Giới thiệu dự án
  • API GPU mới của SDL đã được giới thiệu
  • Tương tự dự án MoonWorks và nhắm tới các API hiện đại (như Vulkan)
  • Đang được sử dụng trong các trò chơi như Samurai Gunn 2
Các tính năng chính và ưu điểm
  • Tính năng compute: API Refresh giúp việc sử dụng tính năng compute trở nên đơn giản
  • Hệ thống shader: Sử dụng phương thức biên dịch ngoại tuyến, hỗ trợ nhiều định dạng
  • Độ an toàn tài nguyên: Bảo đảm độ an toàn tài nguyên ở nội bộ, không phơi bày API phức tạp cho người dùng
Hệ thống shader
  • Sử dụng script shaderbuild.py để build shader ngoại tuyến
  • Khi tạo mô-đun shader, sử dụng định dạng IR của từng backend
  • Bản thân SDL không bọc các trình biên dịch shader
Tình hình phát triển
  • Đã bắt đầu hỗ trợ Metal
  • Hỗ trợ tạo shader thông qua bản port FNA3D
  • Dự kiến sẽ bổ sung hỗ trợ hardware instancing
Phản hồi từ cộng đồng
  • Có nhiều ý kiến khác nhau về phương thức biên dịch shader ngoại tuyến
  • Cách xử lý vòng đời của SDL_gpu được đánh giá tích cực
  • Cần tiếp tục cải thiện để hỗ trợ nhiều backend khác nhau
Kế hoạch sắp tới
  • Viết chú thích tài liệu theo phong cách SDL
  • Tăng cường hỗ trợ Metal và D3D12
  • Bổ sung chương trình kiểm thử và sửa lỗi

# Tóm tắt của GN⁺

  • API GPU mới của SDL hỗ trợ các API đồ họa hiện đại và có thể được dùng trong nhiều trò chơi khác nhau
  • Hệ thống shader áp dụng phương thức biên dịch ngoại tuyến để tối ưu hiệu năng
  • Đang liên tục được cải thiện dựa trên phản hồi từ cộng đồng, đồng thời sẽ tăng cường hỗ trợ Metal và D3D12
  • API này hữu ích cho các nhà phát triển game, hỗ trợ nhiều backend để mang lại tính linh hoạt

1 bình luận

 
GN⁺ 2024-08-31
Ý kiến trên Hacker News
  • SDL3 vẫn còn ở trạng thái preview, nhưng API GPU mới đã được hợp nhất vào nhánh chính

    • API GPU mới cho phép viết mã đồ họa và shader một lần rồi chạy đa nền tảng (bao gồm cả console) với mức phiền toái tối thiểu
    • Trước đây cần Unity, Unreal hoặc một giải pháp tùy chỉnh
    • WebGPU/WGSL cũng là một nỗ lực tương tự nhằm xây dựng stack đồ họa đa nền tảng
    • Hiện tại API GPU của SDL3 không hỗ trợ WebGPU làm backend
  • Thật đáng ngạc nhiên khi SDL GPU API đã hoàn thiện nhanh như vậy

    • WebGPU native vẫn đang được phát triển và chưa hoàn thiện
    • Vì SDL GPU API hỗ trợ nhiều nền tảng hơn nên đã nghĩ rằng sẽ mất nhiều thời gian hơn
  • Rất vui khi được đóng góp cho phần dx12

  • SDL là phần mềm chất lượng cao, biên dịch nhanh trên nhiều nền tảng và luôn hoạt động ổn định

    • Có nhiều kỳ vọng vào API mới
  • Là fan lớn của SDL

    • Khi tìm thư viện game đa nền tảng, SDL và API của nó đã mang lại sự cân bằng phù hợp
    • Cần một thư viện C(++) có thể tạo cửa sổ và graphics context
    • Không muốn phải học một ngôn ngữ mới
  • Rất mong chờ xem mọi thứ sẽ phát triển ra sao

    • Hy vọng sẽ có thêm nhiều lựa chọn để xây dựng game engine và ứng dụng tùy chỉnh
  • Học Vulkan rất thú vị và bổ ích, nhưng cảm giác tiến độ khá chậm

    • Nếu SDL3 đã có từ đầu thì có lẽ đã đạt được nhiều thành quả hơn
  • Chưa từng dùng thư viện này, nhưng muốn xem các ví dụ về khả năng GPU computing đa nền tảng

    • Cần gợi ý nên bắt đầu từ đâu
  • Muốn thấy Raylib có backend SDL GPU

    • Nếu vậy sẽ dùng ngay
  • Tò mò không biết cái này có liên quan đến https://github.com/grimfang4/sdl-gpu hay không

    • Hay đây là một dự án hoàn toàn khác chỉ trùng tên