Công cụ kết xuất mới cho OpenGL và Vulkan đã được thêm vào GTK

Các nhà phát triển thư viện GTK đã công bố sự sẵn có của hai công cụ kết xuất mới - “ngl” và “vulkan”, sử dụng API đồ họa OpenGL (GL 3.3+ và GLES 3.0+) và Vulkan. Các công cụ mới được đưa vào bản phát hành thử nghiệm của GTK 4.13.6. Trong nhánh GTK thử nghiệm, công cụ ngl hiện được sử dụng theo mặc định, nhưng nếu xác định được vấn đề nghiêm trọng trong nhánh ổn định tiếp theo 4.14, công cụ kết xuất "gl" cũ sẽ được trả về.

Các công cụ mới được định vị là thống nhất và được lắp ráp từ một cơ sở mã duy nhất. Bản chất của sự hợp nhất là API Vulkan được sử dụng làm cơ sở, trên đó một mức độ trừu tượng riêng biệt đã được tạo cho OpenGL, có tính đến sự khác biệt giữa OpenGL và Vulkan. Cách tiếp cận này cho phép sử dụng cơ sở hạ tầng chung trong cả hai công cụ để xử lý biểu đồ cảnh, các phép biến đổi, kết cấu bộ đệm và glyphs. Sự hợp nhất cũng đơn giản hóa đáng kể việc duy trì cơ sở mã của cả hai động cơ và giữ cho chúng được cập nhật và đồng bộ hóa.

Không giống như công cụ gl cũ sử dụng một trình đổ bóng đơn giản riêng biệt cho từng loại nút kết xuất và sắp xếp lại dữ liệu theo định kỳ trong quá trình hiển thị ngoài màn hình, các công cụ mới thay vì hiển thị ngoài màn hình sử dụng một trình đổ bóng phức tạp (ubershader) để diễn giải dữ liệu từ bộ đệm. . Ở dạng hiện tại, cách triển khai mới vẫn tụt hậu so với cách triển khai cũ về mức độ tối ưu hóa, vì trọng tâm chính ở giai đoạn hiện tại là vận hành chính xác và dễ bảo trì.

Các tính năng mới còn thiếu trong công cụ gl cũ:

  • Làm mịn đường viền - cho phép bạn giữ được các chi tiết đẹp và đạt được đường viền mượt mà hơn.
    Công cụ kết xuất mới cho OpenGL và Vulkan đã được thêm vào GTK
  • Hình thành các gradient tùy ý, có thể sử dụng bất kỳ số lượng màu sắc và khử răng cưa nào (trong công cụ gl, chỉ hỗ trợ các gradient tuyến tính, xuyên tâm và hình nón với 6 màu dừng).
    Công cụ kết xuất mới cho OpenGL và Vulkan đã được thêm vào GTK
  • Tỷ lệ phân số, cho phép bạn đặt các giá trị tỷ lệ không nguyên, ví dụ: khi sử dụng tỷ lệ 125% cho cửa sổ 1200x800, bộ đệm 1500x1000 sẽ được phân bổ chứ không phải 2400x1600 như trong công cụ cũ.
  • Hỗ trợ công nghệ DMA-BUF để sử dụng nhiều GPU và giảm tải các hoạt động riêng lẻ sang GPU khác.
  • Nhiều nút hiển thị gặp sự cố trong quá trình triển khai cũ đều được xử lý chính xác.

Những hạn chế của công cụ mới bao gồm việc thiếu hỗ trợ định vị theo các giá trị không nguyên (vị trí phân số) và các nút glshader, vốn bị ràng buộc chặt chẽ với các tính năng của công cụ cũ và không còn cần thiết sau khi thêm hỗ trợ cho các nút có mặt nạ (mặt nạ) và kết cấu có độ trong suốt. Người ta cũng đề cập rằng có khả năng xảy ra sự cố với trình điều khiển đồ họa do những thay đổi trong phương pháp làm việc với trình điều khiển.

Trong tương lai, dựa trên mô hình hợp nhất mới, không loại trừ việc tạo ra các công cụ kết xuất sử dụng Metal trong macOS và DirectX trong Windows, nhưng việc tạo ra các công cụ như vậy rất phức tạp do việc sử dụng các ngôn ngữ khác cho trình đổ bóng (“ngl ” và “vulkan” sử dụng ngôn ngữ GLSL, vì vậy đối với Metal và Direct sẽ phải sao chép các shader hoặc sử dụng một lớp dựa trên bộ công cụ SPIRV-Cross).

Các kế hoạch trong tương lai bao gồm việc cung cấp hỗ trợ HDR và ​​​​các công cụ để quản lý màu chính xác, hỗ trợ hiển thị Đường dẫn ở phía GPU, khả năng hiển thị glyphs, hiển thị ngoài luồng và tối ưu hóa hiệu suất cho các thiết bị cũ và tiêu thụ điện năng thấp. Ở dạng hiện tại, hiệu suất của động cơ "vulkan" gần bằng hiệu suất của động cơ "gl" cũ. Engine "ngl" có hiệu suất kém hơn so với engine "gl" cũ, nhưng hiệu suất sẵn có đủ để hiển thị ở tốc độ 60 hoặc 144 FPS. Dự kiến ​​tình hình sẽ thay đổi sau khi tối ưu hóa.

Nguồn: opennet.ru

Thêm một lời nhận xét