Các tiện ích ngôn ngữ WGSL được hỗ trợ
Thành phần wgslLanguageFeatures
của đối tượng GPU
liệt kê tên của các phần mở rộng ngôn ngữ WGSL được hỗ trợ. Hệ thống sẽ tự động bật các tiện ích ngôn ngữ WGSL được hỗ trợ, do đó bạn không cần yêu cầu chúng tôi cung cấp chức năng này một cách rõ ràng. Danh sách này hiện đang trống nhưng bạn có thể dự kiến sẽ có nhiều danh sách trong tương lai (ví dụ: do-while loops
). Xem vấn đề bình minh:1777.
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Hỗ trợ thử nghiệm cho Direct3D 11
Nhóm Chromium đang nỗ lực để thêm tính năng hỗ trợ WebGPU cho Direct3D 11. Giờ đây, bạn có thể thử nghiệm cục bộ bằng cách chạy Chrome trên Windows bằng cờ hiệu dòng lệnh --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. Hãy xem mục Vấn đề bình minh:1705.
Nhận GPU rời theo mặc định khi dùng nguồn điện xoay chiều
Trên các thiết bị macOS có GPU kép, nếu requestAdapter()
được gọi mà không có tuỳ chọn powerPreference
, thì GPU rời sẽ được trả về khi thiết bị của người dùng sử dụng nguồn điện xoay chiều. Nếu không, GPU tích hợp sẽ được trả về. Xem thay đổi 4499307.
Cải thiện trải nghiệm của nhà phát triển
Cảnh báo mới của Công cụ cho nhà phát triển
Nếu bạn sử dụng khoá depth
trong GPUExtend3DDict
, thì một cảnh báo sẽ xuất hiện trong Bảng điều khiển công cụ cho nhà phát triển vì khoá chính xác là depthOrArrayLayers
. Xem phần vấn đề chromium:1440900.
Cảnh báo cũng sẽ được đưa ra nếu một GPUBlendComponent
kết hợp các thành phần rõ ràng và mặc định. Hãy xem mục Vấn đề bình minh:1785.
Mặc dù việc gửi và vẽ kích thước bằng 0 là hợp lệ, nhưng một cảnh báo vẫn khuyến khích nhà phát triển tránh sử dụng khi có thể. Xem Vấn đề bình minh:1786.
Thông báo lỗi tốt hơn
Một thông báo lỗi được cải tiến sẽ hiển thị khi sử dụng GPUCommandEncoder
nếu finish()
đã được gọi. Hãy xem mục Vấn đề bình minh:1736.
Khi gửi vùng đệm lệnh có đối tượng bị huỷ bỏ, nhãn của vùng đệm lệnh được dùng trong submit()
giờ đây sẽ xuất hiện trong thông báo lỗi. Xem vấn đề bình minh:1747.
Phần không hợp lệ của trạng thái khung viền độ sâu hiện được chỉ định trong thông báo lỗi khi xác thực depthStencil
. Hãy xem mục Vấn đề bình minh:1735.
Thông báo lỗi xác thực minBindingSize
nay báo cáo nhóm và số lượng mối liên kết không xác thực được, cũng như vùng đệm. Hãy xem mục Vấn đề bình minh:1604.
Chúng tôi đã cải thiện các thông báo lỗi mà phương thức mapAsync()
trả về trên đối tượng GPUBuffer
để trợ giúp nhà phát triển khi gỡ lỗi. Hãy xem ví dụ bên dưới và phát hành crôm:1431622.
// Create a GPU buffer and map it.
const descriptor = { size: 0, usage: GPUBufferUsage.MAP_READ };
const buffer = device.createBuffer(descriptor);
buffer.mapAsync(GPUMapMode.READ);
// Before it has been mapped, request another mapping.
try {
await buffer.mapAsync(GPUMapMode.READ);
} catch (error) {
// New! Error message tells you mapping is already pending.
console.warn(error.message);
}
Nhãn trong công cụ gỡ lỗi của macOS
Nút bật/tắt gỡ lỗi use_user_defined_labels_in_backend
cho phép bạn chuyển tiếp nhãn đối tượng đến phần phụ trợ để có thể nhìn thấy các nhãn đó trong các công cụ gỡ lỗi dành riêng cho nền tảng, chẳng hạn như RenderDoc, PIX hoặc Instruments. Từ nay trở đi, bạn sẽ có trải nghiệm gỡ lỗi tốt hơn trên macOS khi bật tính năng gỡ lỗi. Xem Vấn đề bình minh:1784
Ghi nhật ký HLSL nếu biên dịch không thành công
Nút bật/tắt gỡ lỗi dump_shaders
cho phép bạn ghi nhật ký chương trình đổ bóng WGSL đầu vào và dịch vụ đổ bóng phụ trợ. Kể từ nay, khi bạn bật chế độ này để gỡ lỗi, HLSL sẽ được kết xuất nếu không biên dịch được. Xem Vấn đề bình minh:1681
Thông tin cập nhật vào Bình minh
Chưa đặt vùng đệm đỉnh
Việc truyền nullptr
thay vì wgpu::Buffer
đến SetVertexBuffer()
trên wgpu::RenderPassEncoder
hoặc wgpu::RenderBundleEncoder
cho phép bạn huỷ đặt một vùng đệm đỉnh đã đặt trước đó trong một khe nhất định. Xem Vấn đề bình minh:1675.
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
Tệp đính kèm tạm thời
Bạn có thể tạo các tệp đính kèm cho phép các thao tác truyền kết xuất nằm trong bộ nhớ thẻ thông tin, tránh lưu lượng truy cập VRAM và có thể tránh phân bổ VRAM cho các hoạ tiết bằng cách thiết lập mức sử dụng wgpu::TextureUsage::TransientAttachment
. Tính năng này chỉ được hỗ trợ cho Metal và Vulkan. Hãy xem Vấn đề bình minh: năm 1695.
wgpu::TextureDescriptor desc;
desc.format = wgpu::TextureFormat::RGBA8Unorm;
desc.size = {1, 1, 1};
desc.usage = wgpu::TextureUsage::RenderAttachment |
wgpu::TextureUsage::TransientAttachment;
auto transientTexture = device.CreateTexture(&desc);
// You can now create views from the texture to serve as transient
// attachments, e.g. as color attachments in a render pipeline.
Xây dựng mà không có depot_tools
Lựa chọn DAWN_FETCH_DEPENDENCIES
CMake mới cho phép bạn tìm nạp các phần phụ thuộc Dawn bằng tập lệnh Python đọc tệp DEPS thay vì yêu cầu cài đặt depot_tools
bằng tất cả dự án phụ thuộc vào tập lệnh này. Xem thay đổi 131750.
Tính năng mới trong WebGPU
Danh sách tất cả nội dung được đề cập trong loạt bài Có gì mới trong WebGPU.
Chrome 125
- Nhóm con (tính năng đang trong quá trình phát triển)
- Kết xuất thành lát của hoạ tiết 3D
- Thông tin cập nhật từ 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à trình thực thi dùng chung
- Các thuộc tính mới về thông tin bộ chuyển đổi
- Sửa lỗi
- Thông tin cập nhật từ 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 cú pháp để loại bỏ thuộc tính tổng hợp trong WGSL
- Tách riêng trạng thái chỉ đọc cho khung viền và chiều sâu
- Thông tin cập nhật từ 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 từ 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 dấu thời gian trong thẻ đ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
- Thông tin cập nhật từ 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 trạng thái khuôn khổ sâu
- Cập nhật thông tin về bộ chuyển đổi
- Số lượng truy vấn dấu thời gian
- Tính năng vệ sinh lò xo
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 từ 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 và ghi
- Thông tin cập nhật từ Bình minh
Chrome 117
- Huỷ thiết lập vùng đệm đỉnh
- Huỷ thiết lập nhóm liên kết
- Tắt tiếng lỗi trong quá trình tạo quy trình không đồng bộ khi thiết bị bị mất
- Thông tin cập nhật về việc 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
- Quy trình lưu vào bộ nhớ đệm với bố cục được tạo tự động
- Thông tin cập nhật từ Bình minh
Chrome 116
- Tích hợp WebCodecs
- Thiết bị bị mất được GPUAdapter trả về
requestDevice()
- Duy trì quá trình phát video mượt mà nếu
importExternalTexture()
được gọi - Tuân thủ thông số kỹ thuật
- Cải thiện trải nghiệm của nhà phát triển
- Thông tin cập nhật từ 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 điện xoay chiều
- Cải thiện trải nghiệm của nhà phát triển
- Thông tin cập nhật từ Bình minh
Chrome 114
- Tối ưu hoá JavaScript
- getCurrentTexture() trên canvas chưa được định cấu hình sẽ gửi InvalidStateError
- Thông tin cập nhật về WGSL
- Thông tin cập nhật từ Bình minh