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

Trình kết xuất mới của GTK

  • GTK đã bổ sung hai trình kết xuất mới cho GL và Vulkan.
  • Chúng được đặt tên bằng cách tái sử dụng các tên hiện có là "ngl" và "vulkan".
  • Chúng được xây dựng từ cùng một mã nguồn nên cũng được gọi là trình kết xuất "hợp nhất".

Một nguồn mã duy nhất

  • Hai trình kết xuất được xây dựng từ cùng một mã nguồn và được thiết kế theo mô hình tuân theo API Vulkan.
  • Chúng bao gồm các lớp trừu tượng để bao phủ sự khác biệt giữa Vulkan và GL.
  • Có thể chia sẻ hạ tầng như duyệt scene graph, duy trì phép biến đổi, bộ nhớ đệm texture và glyph.
  • Có khả năng mở rộng sang trình kết xuất dựa trên Metal của macOS hoặc trình kết xuất dựa trên DirectX của Windows.

Chi tiết triển khai

  • Trình kết xuất GL hiện có dùng các shader đơn giản và với nội dung phức tạp thì phụ thuộc vào kết xuất offscreen.
  • Trình kết xuất hợp nhất có shader cho từng node, và thay vì offscreen thì dùng các shader phức tạp diễn giải dữ liệu từ buffer.
  • Trình kết xuất hợp nhất ít được tối ưu hơn, nhưng tập trung vào tính chính xác và khả năng bảo trì nên có thể xử lý chính xác nhiều cây render node đa dạng hơn.

Tính năng mới

  • Khử răng cưa: trình kết xuất GL hiện có từng gặp vấn đề làm mất chi tiết, còn trình kết xuất hợp nhất cải thiện điều này bằng khử răng cưa.
  • Tỷ lệ thu phóng phân số: trình kết xuất hợp nhất có thể xử lý đúng tỷ lệ thu phóng phân số.
  • Gradient tùy ý: trình kết xuất hợp nhất có thể xử lý gradient với số lượng color stop không giới hạn.
  • Dmabufs: trình kết xuất Vulkan có thể tạo dmabufs khi tạo texture thông qua API render_texture.

Những điểm cần lưu ý

  • Node glshader không còn được hỗ trợ.
  • Vị trí phân số: trình kết xuất mới đặt đối tượng ở vị trí chính xác.
  • Vấn đề driver: trình kết xuất mới sử dụng driver đồ họa theo cách mới và khác nên có thể phát sinh vấn đề.

Có nhanh hơn không?

  • Hiện tại trình kết xuất mới vẫn chưa nhanh hơn.
  • Trình kết xuất GL hiện có được tối ưu cho tốc độ, còn trình kết xuất mới cung cấp các tính năng mới và độ chính xác cao hơn.
  • Trình kết xuất Vulkan cho thấy hiệu năng tương đương trình kết xuất GL hiện có trong các benchmark không chính thức.

Mặc định mới

  • Trong snapshot 4.13.6 được công bố gần đây, trình kết xuất ngl đã được đặt làm mặc định mới.
  • Đây là biện pháp thử nghiệm, và nếu có vấn đề xảy ra thì có thể quay lại trình kết xuất GL cũ.

Kế hoạch và khả năng trong tương lai

  • Trình kết xuất mới là nền tảng tốt để hiện thực xử lý màu đúng chuẩn bao gồm HDR, path rendering trên GPU, rendering ngoài main thread, cải thiện hiệu năng và nhiều thứ khác.

Tóm tắt

  • Trình kết xuất mới có các tính năng thú vị và sẽ còn được bổ sung thêm nhiều tính năng.
  • Họ kêu gọi mọi người thử trình kết xuất mới và gửi phản hồi về việc nó có hoạt động tốt hay không.

Ý kiến của GN⁺

  • Trình kết xuất mới là một bước tiến quan trọng, mang đến cho các nhà phát triển các tùy chọn rendering chính xác hơn và đa dạng hơn.
  • Cách tiếp cận hợp nhất Vulkan và GL có tiềm năng cải thiện khả năng tương thích rendering trên nhiều nền tảng trong tương lai.
  • Những tiến bộ kỹ thuật này sẽ góp phần cải thiện trải nghiệm người dùng và nâng cao chất lượng hình ảnh của ứng dụng.

1 bình luận

 
GN⁺ 2024-01-30
Ý kiến trên Hacker News
  • Vào khoảng năm 2010, từng có một trình kết xuất HTML mang tính thử nghiệm cho phép triển khai giao diện người dùng của ứng dụng GTK trong trình duyệt chỉ bằng HTML và CSS. Vào thời điểm đó, đây là điều rất ấn tượng vì Atom, VS Code, Electron, và có lẽ cả NodeJS, vẫn chưa xuất hiện. Hiện không rõ trình kết xuất HTML đó còn tồn tại hay không.
  • Cảm giác tiếc nuối về việc GTK đi theo xu hướng cho phép widget trên thanh tiêu đề. Một số phần có thể kéo được còn một số thì không, làm giảm không gian dành cho tên ứng dụng và tên tệp. Đây không phải vấn đề chỉ riêng GTK gặp phải.
  • Thiếu hiểu biết về cách hoạt động của môi trường desktop trên Linux. Cảm giác như mọi thứ ngày càng phức tạp hơn và bị chồng thêm nhiều lớp.
  • Hào hứng với khả năng scale phân số chính xác đến từng pixel.
  • Có nhắc đến việc dùng wgpu.rs thì có thể có được DirectX và Metal miễn phí.
  • Quan tâm đến một trình kết xuất văn bản ANSI, qua đó có thể chạy chương trình GTK bên trong xterm. Tùy chọn bổ sung tính năng sixel cũng có thể được thêm vào.
  • Thắc mắc vì sao sự suy giảm hiệu năng lại được chấp nhận. Nhiều người vẫn thực hiện phần lớn tác vụ tính toán trên phần cứng cũ, và các tính năng này có thể bị tắt hoặc thậm chí không được GPU hỗ trợ.
  • Công việc trên GTK có vẻ thú vị và rất ngầu. Có nhắc đến anti-aliasing và kỳ vọng vào khả năng áp dụng kỹ thuật signed distance field dùng để render font trong game engine. Nhiều kỹ thuật được dùng trong game renderer cũng có thể hữu ích cho mã GUI.
  • Có nhiều nhà phát triển engine đồ họa đã tạo ra các renderer đi trước renderer của bộ công cụ GUI mã nguồn mở vài thế hệ, nhưng phần lớn họ làm việc tại các công ty phát triển game nên không có thời gian đóng góp cho stack mã nguồn mở. Nếu cộng đồng có thể tổ chức ngân sách thường xuyên để trả công cho những nhà phát triển này, desktop mã nguồn mở có thể sẽ chứng kiến những bản cập nhật đáng kể về rendering và toolkit.
  • Một bình luận cụ thể đã bị báo cáo nên nội dung bị ẩn.