Tính năng mới trong WebGPU (Chrome 139)

François Beaufort
François Beaufort

Xuất bản: Ngày 30 tháng 7 năm 2025

Hỗ trợ hoạ tiết 3D cho các định dạng nén BC và ASTC

Các tính năng "texture-compression-bc-sliced-3d""texture-compression-astc-sliced-3d" của WebGPU bổ sung khả năng hỗ trợ cho kết cấu 3D bằng cách sử dụng các định dạng Nén khối (BC) và Nén kết cấu thích ứng (ASTC). Điều này cho phép bạn tận dụng khả năng nén hiệu quả của các định dạng BC và ASTC cho dữ liệu hoạ tiết dạng khối, giúp giảm đáng kể mức sử dụng bộ nhớ và yêu cầu về băng thông mà không làm giảm đáng kể chất lượng hình ảnh. Điều này đặc biệt có giá trị trong các lĩnh vực như hình ảnh hoá khoa học, chụp ảnh y tế và kỹ thuật kết xuất nâng cao.

Đoạn mã sau kiểm tra xem bộ chuyển đổi có hỗ trợ kết cấu 3D với các định dạng nén BC và ASTC hay không, đồng thời yêu cầu một thiết bị có các tính năng này nếu có.

const adapter = await navigator.gpu.requestAdapter();

const requiredFeatures = [];
if (adapter?.features.has("texture-compression-bc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-bc",
    "texture-compression-bc-sliced-3d",
  );
}
if (adapter?.features.has("texture-compression-astc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-astc",
    "texture-compression-astc-sliced-3d",
  );
}
const device = await adapter?.requestDevice({ requiredFeatures });

// Later on...
if (device.features.has("texture-compression-astc-sliced-3d")) {
  // Create a 3D texture using ASTC compression
} else if (device.features.has("texture-compression-bc-sliced-3d")) {
  // Create a 3D texture using BC compression
} else {
  // Fallback: Create an uncompressed 3D texture
}

Khám phá ảnh chụp não 3D bằng cách xem Kết xuất khối lượng – Mẫu WebGPU 3D kết cấu và xem mục nhập chromestatus.

Hình ảnh chụp não 3D được kết xuất bằng WebGPU.
Hình ảnh chụp não từ một hoạ tiết 3D có định dạng nén ASTC.

Tính năng mới "core-features-and-limits"

Chúng tôi sắp ra mắt một tính năng "core-features-and-limits" mới cho chế độ tương thích WebGPU sắp tới. Tính năng này cho biết rằng bộ chuyển đổi hoặc thiết bị hỗ trợ các tính năng và giới hạn cốt lõi của quy cách WebGPU. "core" WebGPU là phiên bản duy nhất hiện có, vì vậy, tất cả các triển khai WebGPU đều phải có "core-features-and-limits" trong các tính năng được hỗ trợ.

Trong tương lai, khi chế độ tương thích WebGPU được phát hành, một bộ chuyển đổi hoặc thiết bị có thể không có tính năng này để cho biết đó là bộ chuyển đổi hoặc thiết bị ở chế độ tương thích chứ không phải là bộ chuyển đổi hoặc thiết bị cốt lõi. Khi được bật trên một thiết bị, chế độ này sẽ loại bỏ mọi hạn chế của chế độ tương thích (tính năng và giới hạn).

Để biết nội dung giải thích chi tiết và cách sử dụng ở chế độ tương thích WebGPU, hãy tham khảo phần giải thích và phần sau. Hãy xem vấn đề 418025721.

Bản dùng thử theo nguyên gốc cho chế độ tương thích WebGPU

WebGPU là một API mạnh mẽ được thiết kế cho đồ hoạ hiện đại, phù hợp với các công nghệ như Vulkan, Metal và Direct3D 12. Tuy nhiên, một số lượng đáng kể thiết bị vẫn chưa hỗ trợ các API mới hơn này. Ví dụ: trên Windows, 31% người dùng Chrome không có Direct3D 11.1 trở lên. Trên Android, 15% người dùng Android không có Vulkan 1.1, trong đó có 10% người dùng không có Vulkan.

Điều này gây khó khăn cho những nhà phát triển muốn tối đa hoá phạm vi tiếp cận của ứng dụng. Họ thường buộc phải phát triển nhiều cách triển khai (ví dụ: WebGPU và WebGL), chấp nhận đối tượng hạn chế hơn với WebGPU cốt lõi hoặc gắn bó với WebGL, bỏ lỡ các tính năng nâng cao của WebGPU như tính toán GPU.

Hình ảnh minh hoạ chế độ tương thích WebGPU.
Chế độ tương thích WebGPU mở rộng phạm vi tiếp cận.

Chế độ tương thích WebGPU cung cấp một giải pháp bằng cách cung cấp phiên bản API WebGPU có hạn chế một chút và cho phép chọn sử dụng. Chế độ này được thiết kế để chạy các API đồ hoạ cũ như OpenGL ES 3.1 và Direct3D11, giúp mở rộng đáng kể phạm vi tiếp cận của ứng dụng đến những thiết bị không hỗ trợ các API đồ hoạ hiện đại, rõ ràng mà WebGPU cốt lõi yêu cầu.

Vì chế độ tương thích là một phần của WebGPU, nên các ứng dụng được tạo bằng chế độ này cũng là các ứng dụng "cốt lõi" WebGPU hợp lệ. Điều này có nghĩa là các ứng dụng sẽ chạy liền mạch ngay cả trên những trình duyệt không hỗ trợ cụ thể chế độ tương thích.

Đối với nhiều ứng dụng cơ bản, việc bật chế độ tương thích cũng đơn giản như việc truyền featureLevel: "compatibility" khi bạn gọi requestAdapter(). Các ứng dụng phức tạp hơn có thể yêu cầu điều chỉnh nhỏ để phù hợp với các hạn chế của chế độ này. Mẫu WebGPU tạo mipmap là một ví dụ điển hình.

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({
  featureLevel: "compatibility",
});

const hasCore = adapter?.features.has("core-features-and-limits");
const device = await adapter?.requestDevice({
  requiredFeatures: (hasCore ? ["core-features-and-limits"] : []),
});

if (device?.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions will apply
}

Bật tính năng này

Theo mặc định, chế độ tương thích WebGPU không được bật trong Chrome, nhưng bạn có thể thử nghiệm trong Chrome 139 bằng cách bật rõ ràng chức năng này. Bạn có thể kích hoạt tính năng này cục bộ bằng cách bật cờ "Experimental Web Platform Features" (Các tính năng thử nghiệm của nền tảng web) tại chrome://flags/#enable-experimental-web-platform-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, một thử nghiệm nguồn gốc đang diễn ra và dự kiến kết thúc trong Chrome 145 (ngày 21 tháng 4 năm 2026). Để tham gia dùng thử, hãy tham khảo bài đăng Bắt đầu dùng thử nguồn gốc.

Thông tin cập nhật về bình minh

Đối số message được thêm vào hàm WGPUQueueWorkDoneCallback để nhất quán hơn với các hàm gọi lại khác cũng nhận trạng thái. Xem webgpu-headers PR.

Khi emdawnwebgpu được liên kết với -sSHARED_MEMORY, tệp webgpu.cpp của tệp này cũng được biên dịch bằng cờ này. Xem Dawn CL 244075.

Đây chỉ là một số điểm nổi bật chính. Xem danh sách đầy đủ các cam kết.

Tính năng mới trong WebGPU

Danh sách mọi nội dung đã được đề cập trong loạt bài Tính năng mới trong WebGPU.

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113