พื้นผิวแบบลอยแบบ 32 บิตที่กรองได้
พื้นผิวจุดลอยตัว 32 บิตนั้นใช้เก็บข้อมูลที่มีความแม่นยำสูง เช่น รูปภาพ HDR และแผนที่ที่มีความลึก และมีความสำคัญอย่างยิ่งสำหรับ GPU ที่ใช้ในเกมระดับไฮเอนด์และแอปพลิเคชันระดับมืออาชีพ
การรองรับพื้นผิวแบบลอยแบบ 32 บิตที่กรองได้จะอธิบายความสามารถของ GPU เพื่อกรองพื้นผิวที่เป็นจุดลอยตัว 32 บิต ซึ่งหมายความว่า GPU สามารถตัดขอบของพื้นผิวที่เป็นจุดลอยตัวให้เรียบ ทำให้ดูมีความหยักน้อยลง โดยจะคล้ายกับส่วนขยาย "OES_texture_Flo_linear" ใน WebGL
GPU บางส่วนไม่รองรับพื้นผิวแบบลอยแบบ 32 บิตที่กรองได้ เมื่อฟีเจอร์ "float32-filterable"
พร้อมใช้งานใน GPUAdapter
ตอนนี้คุณจะขอ GPUDevice
โดยใช้ฟีเจอร์นี้ได้ รวมถึงพื้นผิวตัวกรองที่มีรูปแบบ "r32Flo", "rg32Flo" และ "rgba32Flo" ดูตัวอย่างต่อไปนี้และปัญหารุ่งเช้า:1664
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("float32-filterable")) {
throw new Error("Filterable 32-bit float textures support is not available");
}
// Explicitly request filterable 32-bit float textures support.
const device = await adapter.requestDevice({
requiredFeatures: ["float32-filterable"],
});
// Create a sampler with linear filtering.
const sampler = device.createSampler({
magFilter: "linear",
});
// Create a texture with rgba32float format.
const texture = device.createTexture({
size: [100, 100],
format: "rgba32float",
usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING,
});
// Write data to texture, create a bindgroup with sampler and texture and
// send the appropriate commands to the GPU....
รูปแบบ Verm10-10-10-2
เพิ่มรูปแบบ Vertex ใหม่ชื่อ "unorm10-10-10-2" หรือ "rgb10a2" ในข้อมูลจำเพาะของ WebGPU ซึ่งประกอบด้วยค่า 32 บิตที่อัดแน่นไปด้วยค่าจำนวนเต็มที่ไม่มีเครื่องหมายมาตรฐาน 4 ค่า โดยจัดเรียงตาม 10 บิต, 10 บิต, 10 บิต และ 2 บิต ดูตัวอย่างต่อไปนี้และปัญหารุ่งอรุณ:2044
// Define the layout of vertex attribute data with unorm10-10-10-2 format.
const buffers = [
{
arrayStride: 0,
attributes: [
{ format: "unorm10-10-10-2", offset: 0, shaderLocation: 0 },
],
},
];
// Describe the vertex shader entry point and its input buffer layouts.
const vertex = {
module: myVertexShaderModule,
entryPoint: "main",
buffers,
};
// Pass vertex to device.createRenderPipeline() and
// use vec4<f32> type in WGSL shader code to manipulate data.
รูปแบบพื้นผิว rgb10a2uint
มีการเพิ่มรูปแบบพื้นผิวใหม่ชื่อ "rgb10a2uint" ในข้อมูลจำเพาะของ WebGPU ซึ่งประกอบด้วยรูปแบบพิกเซล 32 บิตที่มีส่วนประกอบของจำนวนเต็มที่ไม่มีเครื่องหมาย 4 รายการ ได้แก่ สีแดง 10 บิต สีเขียว 10 บิต สีน้ำเงิน 10 บิต และอัลฟ่า 2 บิต ดูตัวอย่างต่อไปนี้และปัญหารุ่งเช้า:1936
// Create a texture with rgb10a2uint format.
const texture = device.createTexture({
size: [100, 100],
format: "rgb10a2uint",
usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING,
});
// Write data to texture, create a bindgroup with texture and
// send the appropriate commands to the GPU....
ข้อมูลอัปเดตเกี่ยวกับ Dawn
การค้นหาการประทับเวลาช่วยให้แอปพลิเคชัน WebGPU สามารถวัดระยะเวลาในการเรียกใช้คำสั่ง GPU ได้อย่างแม่นยํา (จนถึงระดับนาโนวินาที) อัปเดตรูปร่าง API สำหรับเก็บข้อมูลการค้นหาการประทับเวลาที่จุดเริ่มต้นและจุดสิ้นสุดของบัตรให้ตรงกับข้อกำหนด WebGPU แล้ว ดูตัวอย่างต่อไปนี้และปัญหารุ่งเช้า:1800
// Create a timestamp query set that will store the timestamp values.
wgpu::QuerySetDescriptor querySetDescriptor = {
.count = 2,
.type = wgpu::QueryType::Timestamp};
wgpu::QuerySet querySet = device.CreateQuerySet(&querySetDescriptor);
wgpu::RenderPassTimestampWrites timestampWrites = {
.querySet = querySet,
.beginningOfPassWriteIndex = 0,
.endOfPassWriteIndex = 1};
wgpu::ComputePassDescriptor pass{.timestampWrites = ×tampWrites};
// Write the queue timestamp into beginningOfPassWriteIndex and
// endOfPassWriteIndex of myQuerySet respectively before and after the pass
// commands execute.
myEncoder.BeginComputePass(&pass);
ทั้งหมดนี้พูดถึงไฮไลต์สำคัญเพียงบางส่วน ดูรายการสัญญาผูกมัดอย่างละเอียด
มีอะไรใหม่ใน WebGPU
รายการของทุกอย่างที่มีการพูดถึงในซีรีส์มีอะไรใหม่ใน WebGPU
Chrome 125
Chrome 124
- พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านอย่างเดียว
- การสนับสนุน Service Worker และตัวช่วยแบบแชร์
- แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
- แก้ไขข้อบกพร่อง
- ข้อมูลอัปเดตยามเช้า
Chrome 123
- การรองรับฟังก์ชันในตัวของ DP4a ใน WGSL
- พารามิเตอร์ตัวชี้แบบไม่จำกัดใน WGSL
- น้ำตาลไวยากรณ์สำหรับการยกเลิกการอ้างอิงคอมโพสิตใน WGSL
- สถานะแบบอ่านอย่างเดียวสำหรับมุมมองที่เป็นลายฉลุและความลึก
- ข้อมูลอัปเดตยามเช้า
Chrome 122
- ขยายการเข้าถึงด้วยโหมดความเข้ากันได้ (ฟีเจอร์อยู่ระหว่างการพัฒนา)
- เพิ่มขีดจํากัด maxVertexAttributes
- ข้อมูลอัปเดตยามเช้า
Chrome 121
- รองรับ WebGPU ใน Android
- ใช้ DXC แทน FXC สำหรับการคอมไพล์ตัวปรับแสงเงาบน Windows
- การค้นหาการประทับเวลาในการประมวลผลและแสดงผลบัตร
- จุดแรกเข้าเริ่มต้นไปยังโมดูลตัวปรับแสงเงา
- รองรับ display-p3 เป็นพื้นที่สี GPUExternalTexture
- ข้อมูลฮีพของหน่วยความจำ
- ข้อมูลอัปเดตยามเช้า
Chrome 120
- รองรับค่าจุดลอยตัว 16 บิตใน WGSL
- ก้าวข้ามขีดจำกัด
- การเปลี่ยนแปลงสถานะของฉลุลายความลึก
- การอัปเดตข้อมูลอะแดปเตอร์
- การวัดปริมาณของการค้นหาการประทับเวลา
- ฟีเจอร์ทำความสะอาดฤดูใบไม้ผลิ
Chrome 119
- พื้นผิวแบบลอยแบบ 32 บิตที่กรองได้
- รูปแบบ Verm10-10-10-2
- รูปแบบพื้นผิวของ rgb10a2uint
- ข้อมูลอัปเดตยามเช้า
Chrome 118
- การรองรับ HTMLImageElement และ ImageData ใน
copyExternalImageToTexture()
- การสนับสนุนแบบทดลองสำหรับพื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านอย่างเดียว
- ข้อมูลอัปเดตยามเช้า
Chrome 117
- ยกเลิกการตั้งค่าบัฟเฟอร์เวอร์เท็กซ์
- ยกเลิกการตั้งค่ากลุ่มการเชื่อมโยง
- ปิดเสียงข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่ออุปกรณ์สูญหาย
- การอัปเดตการสร้างโมดูลตัวปรับแสงเงา SPIR-V
- การปรับปรุงประสบการณ์ของนักพัฒนาซอฟต์แวร์
- การแคชไปป์ไลน์ด้วยเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ
- ข้อมูลอัปเดตยามเช้า
Chrome 116
- การผสานรวม WebCodecs
- อุปกรณ์ที่สูญหายได้รับคืนโดย GPUAdapter
requestDevice()
- เล่นวิดีโอได้ลื่นไหลแม้เรียกใช้
importExternalTexture()
- ความสอดคล้องของข้อกำหนด
- การปรับปรุงประสบการณ์ของนักพัฒนาซอฟต์แวร์
- ข้อมูลอัปเดตยามเช้า
Chrome 115
- ส่วนขยายภาษา WGSL ที่รองรับ
- การสนับสนุนแบบทดลองสำหรับ Direct3D 11
- รับ GPU แบบแยกกันโดยค่าเริ่มต้นเมื่อใช้ไฟ AC
- การปรับปรุงประสบการณ์ของนักพัฒนาซอฟต์แวร์
- ข้อมูลอัปเดตยามเช้า
Chrome 114
- เพิ่มประสิทธิภาพ JavaScript
- getCurrentTexture() ใน Canvas ที่ไม่ได้กำหนดค่าแสดงข้อผิดพลาด invalidStateError
- ข้อมูลอัปเดตเกี่ยวกับ WGSL
- ข้อมูลอัปเดตยามเช้า