Sau nhiều năm phát triển, nhóm Chrome thông báo rằng bản phát hành WebGPU đầu tiên hiện đã có trong Chrome theo mặc định trên ChromeOS, macOS và Windows. Hãy xem phần Chrome giao hàng WebGPU để tìm hiểu thêm.
Chúng tôi cũng đã bắt đầu bổ sung tài liệu toàn diện về WebGPU trên MDN.
Và còn nhiều tính năng khác nữa.
Sử dụng nguồn VideoFrame
của WebCodecs trong importExternalTexture()
WebGPU hiển thị một API để tạo "hoạ tiết bên ngoài" mờ các đối tượng từ HTMLVideoElement
đến importExternalTexture()
. Bạn có thể sử dụng các đối tượng này để lấy mẫu khung hình video một cách hiệu quả, theo cách không sao chép trực tiếp từ dữ liệu YUV nguồn.
Tuy nhiên, thông số kỹ thuật ban đầu của WebGPU không cho phép tạo đối tượng GPUExternalTexture
từ các đối tượng WebCodecs VideoFrame
. Khả năng này rất quan trọng đối với các ứng dụng xử lý video nâng cao đã sử dụng WebCodecs và muốn tích hợp WebGPU vào quy trình xử lý video. Cuộc thảo luận hiện đang diễn ra về vấn đề gpuweb/gpuweb#1380.
Bật tính năng này
Theo mặc định, tính năng này không được bật trong Chrome nhưng bạn có thể thử nghiệm tính năng này trong Chrome 113 bằng cách bật chức năng này một cách rõ ràng. Bạn có thể kích hoạt nó cục bộ bằng cách bật "Tính năng dành cho nhà phát triển WebGPU" gắn cờ lúc chrome://flags/#enable-webgpu-developer-features
.
Để bật tính năng này cho tất cả khách truy cập vào ứng dụng của bạn, chúng tôi đang triển khai bản dùng thử theo nguyên gốc và sẽ kết thúc trong Chrome 118 (ngày 8 tháng 12 năm 2023). Để tham gia dùng thử, hãy đăng ký và thêm một phần tử meta có mã thông báo dùng thử theo nguyên gốc trong tiêu đề HTML hoặc HTTP. Để biết thêm thông tin, hãy tham khảo bài đăng Bắt đầu sử dụng bản dùng thử theo nguyên gốc.
Mã mẫu
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
Hãy xem mẫu thử nghiệm Tải video lên bằng WebCodecs để thử nghiệm tính năng này.
Tính năng mới trong WebGPU
Danh sách mọi nội dung được đề cập trong loạt bài Có gì mới trong WebGPU.
Chrome 128
- Thử nghiệm với các nhóm con
- Giảm tình trạng sai lệch độ sâu cho đường và điểm
- Ẩn cảnh báo lỗi chưa thu thập được trong Công cụ cho nhà phát triển nếu preventDefault
- WGSL nội suy lấy mẫu trước tiên rồi
- Thông tin cập nhật về bình minh
Chrome 127
- Hỗ trợ thử nghiệm cho OpenGL ES trên Android
- Thuộc tính thông tin GPU
- Cải thiện khả năng tương tác WebAssembly
- Cải thiện lỗi bộ mã hoá lệnh
- Thông tin cập nhật về bình minh
Chrome 126
- Tăng giới hạn maxTextureArrayLayers
- Tối ưu hoá quá trình tải vùng đệm lên cho phần phụ trợ Vulkan
- Cải thiện thời gian biên dịch đổ bóng
- Vùng đệm lệnh mà bạn gửi phải là duy nhất
- Thông tin cập nhật về bình minh
Chrome 125
- Nhóm con (tính năng đang được phát triển)
- Kết xuất thành lát cắt của hoạ tiết 3D
- Thông tin cập nhật về bình minh
Chrome 124
- Kết cấu bộ nhớ chỉ đọc và đọc-ghi
- Hỗ trợ trình chạy dịch vụ và nhân viên dùng chung
- Thuộc tính mới về thông tin của bộ chuyển đổi
- Sửa lỗi
- Thông tin cập nhật về bình minh
Chrome 123
- Hỗ trợ các hàm tích hợp DP4a trong WGSL
- Tham số con trỏ không bị hạn chế trong WGSL
- Đường dẫn cú pháp để loại bỏ tham chiếu của các thành phần tổng hợp trong WGSL
- Tách riêng trạng thái chỉ có thể đọc cho các khía cạnh khuôn mẫu và chiều sâu
- Thông tin cập nhật về bình minh
Chrome 122
- Mở rộng phạm vi tiếp cận bằng chế độ tương thích (tính năng đang trong quá trình phát triển)
- Tăng giới hạn maxVertexAttributes
- Thông tin cập nhật về bình minh
Chrome 121
- Hỗ trợ WebGPU trên Android
- Sử dụng DXC thay vì FXC để biên dịch chương trình đổ bóng trên Windows
- Truy vấn có dấu thời gian khi truyền dữ liệu điện toán và kết xuất
- Điểm truy cập mặc định đến mô-đun chương trình đổ bóng
- Hỗ trợ display-p3 dưới dạng hệ màu GPUExternalTexture
- Thông tin về vùng nhớ khối xếp bộ nhớ
- Thông tin cập nhật về bình minh
Chrome 120
- Hỗ trợ các giá trị dấu phẩy động 16 bit trong WGSL
- Vượt giới hạn
- Thay đổi đối với trạng thái của khuôn hình theo chiều sâu
- Cập nhật thông tin về bộ chuyển đổi
- Định lượng truy vấn có dấu thời gian
- Tính năng dọn dẹp vào mùa xuân
Chrome 119
- Hoạ tiết nổi 32 bit có thể lọc
- định dạng đỉnh unorm10-10-10-2
- định dạng hoạ tiết rgb10a2uint
- Thông tin cập nhật về bình minh
Chrome 118
- Hỗ trợ HTMLImageElement và ImageData trong
copyExternalImageToTexture()
- Hỗ trợ thử nghiệm cho hoạ tiết lưu trữ chỉ đọc-ghi và chỉ đọc
- Thông tin cập nhật về bình minh
Chrome 117
- Huỷ đặt vùng đệm đỉnh
- Huỷ đặt nhóm liên kết
- Tắt tiếng lỗi của quá trình tạo quy trình không đồng bộ khi mất thiết bị
- Thông tin cập nhật về quá trình tạo mô-đun chương trình đổ bóng SPIR-V
- Cải thiện trải nghiệm của nhà phát triển
- Lưu quy trình vào bộ nhớ đệm với bố cục được tạo tự động
- Thông tin cập nhật về bình minh
Chrome 116
- Tích hợp WebCodecs
- Thiết bị bị mất do GPUAdapter
requestDevice()
trả về - Giữ cho video phát mượt mà nếu
importExternalTexture()
được gọi - Tuân thủ quy cách
- Cải thiện trải nghiệm của nhà phát triển
- Thông tin cập nhật về bình minh
Chrome 115
- Các phần mở rộng ngôn ngữ WGSL được hỗ trợ
- Hỗ trợ thử nghiệm cho Direct3D 11
- Nhận GPU rời theo mặc định khi dùng nguồn AC
- Cải thiện trải nghiệm của nhà phát triển
- Thông tin cập nhật về bình minh
Chrome 114
- Tối ưu hoá JavaScript
- getCurrentTexture() trên canvas chưa định cấu hình gửi InvalidStateError
- Thông tin cập nhật về WGSL
- Thông tin cập nhật về bình minh